国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CSS學習摘要-布局

bigdevil_s / 2849人閱讀

摘要:注全文摘自介紹布局頁面布局技術允許我們拾取網頁中的元素,并且控制它們相對正常布局流周邊元素父容器或者主視口窗口的位置。添加此代碼將給出以下結果絕對定位絕對定位絕對定位用于將元素移動到頁面的任何位置,以創建復雜的布局。

注:全文摘自MDN-介紹CSS布局

CSS頁面布局技術允許我們拾取網頁中的元素,并且控制它們相對正常布局流、周邊元素、父容器或者主視口/窗口的位置。在這個模塊中將涉及更多關于頁面布局技術的細節:

  • 浮動
  • 定位
  • CSS 表格
  • 彈性盒子
  • 網格

每種技術都有它們的用途,各有優缺點。

正常布局流

正常布局流是指在不對頁面進行任何布局控制時,瀏覽器默認的HTML布局方式。讓我們快速地看一個HTML的例子:

I love my cat.

  • Buy cat food
  • Exercise
  • Cheer up friend

The end!

默認情況下,瀏覽器的顯示如下:

注意,HTML元素完全按照源碼中出現的先后次序顯示——第一個段落、無序列表、第二個段落。

布局技術會覆蓋默認的布局行為:

  • position屬性 — 正常布局流中,默認為 static ,使用其它值會引起元素不同的布局方式,例如將元素固定到瀏覽器視口的左上角。
  • 浮動——應用 float值,諸如 left 能夠讓塊級元素互相并排成一行,而不是一個堆疊在另一個上面。
  • display 屬性——標準值 block, inline or inline-block 會改變元素在正常布局流中的行為方式(見 Types of CSS boxes ),而一些不常見或特殊的值允許我們使用完全不同的方式進行布局,使用工具比如Flexbox。

浮動

浮動技術允許元素浮動到另外一個元素的左側或右側,而不是默認的一個堆疊另一個。float 的主要用途是布置出多個列并且浮動文字以環繞圖片。下面我們快速瀏覽一下 float 屬性并通過一個例子來說明。

float 屬性有四個可能的值:

  • left — 將元素浮動到左側。
  • right — 將元素浮動到右側。
  • none — 默認值, 不浮動。
  • inherit — 繼承父元素的浮動屬性。

簡單HTML示例

下面展示了如何用浮動來創建一個簡單的兩列布局。首先看一下HTML:

2 column layout example

First column

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla luctus aliquam dolor, eu lacinia lorem placerat vulputate.

Second column

Nam vulputate diam nec tempor bibendum. Donec luctus augue eget malesuada ultrices. Phasellus turpis est, posuere sit amet dapibus ut.

代碼中有一個一級標題和兩個簡單的

元素。每個又各自包含一個二級標題和一個段落。默認情況下。HTML內容自上而下顯示:

整列浮動

下面讓我們將兩個

元素排成一行。下面的代碼可以實現這個效果. 注意這兩個
一個浮動值為 left,另外一個浮動為 right。這意味著它們其中一個往左靠,另外一個往右靠。給這兩個元素分別設置 width值,使得它們能夠在同一行放下來,并且設置一個水平的間距(總寬度不要大于100!).

div:nth-of-type(1) {
  width: 48%;
  float: left;
}

div:nth-of-type(2) {
  width: 48%;
  float: right;
}

修改過的代碼如下:

定位技術

定位技術(position)允許我們將一個元素從它在頁面的原始位置準確地移動到另外一個位置。

有四種主要的定位類型需要我們了解:

  • 靜態定位(Static positioning) 是每個元素默認的屬性——它表示“將元素放在文檔布局流的默認位置——沒有什么特殊的地方”。
  • 相對定位(Relative positioning) 允許我們相對元素在正常的文檔流中的位置移動它——包括將兩個元素疊放在頁面上。這對于微調和精準設計(design pinpointing)非常有用。
  • 絕對定位(Absolute positioning) 將元素完全從頁面的正常布局流中移出,類似將它多帶帶放在一個圖層中. 我們可以將元素相對于頁面的 元素邊緣固定,或者相對于離元素最近的被定位的祖先元素(ancestor element)。絕對定位在創建復雜布局效果時非常有用,例如通過標簽顯示和隱藏的內容面板或者通過按鈕控制滑動到屏幕中的信息面板.
  • 固定定位(Fixed positioning) 與絕對定位非常類似,除了它是將一個元素相對瀏覽器視口固定,而不是相對另外一個元素。 在創建類似頁面滾動總是處于頁面上方的導航菜單時非常有用。

簡單定位示例

我們將展示一些示例代碼來熟悉這些布局技術. 這些示例代碼都作用在相同的HTML上:

Positioning

I am a basic block level element.

I am a basic block level element.

I am a basic block level element.

該HTML將使用以下CSS默認樣式:

body {
  width: 500px;
  margin: 0 auto;
}

p {
  background: aqua;
  border: 3px solid blue;
  padding: 10px;
  margin: 10px;
}

span {
  background: red;
  border: 1px solid black;
}

渲染效果如下:

相對定位

相對定位通常用來對布局進行微調,比如將一個圖標往下調一點,以便放置文字. 我們可以通過下面的規則添加相對定位來實現效果:

.positioned {
  position: relative;
  background: yellow;
  top: 30px;
  left: 30px;
}

這里我們給中間段落一個position``relative值——這屬性本身不做任何事情,所以我們還添加了topleft屬性。這些可以將受影響的元素向下向右移——這可能看起來和你所期待的相反,但你需要把它看成是左邊和頂部的元素被“推開”一定距離,這就導致了它的向下向右移動。

添加此代碼將給出以下結果:

絕對定位

絕對定位用于將元素移動到web頁面的任何位置,以創建復雜的布局。有趣的是,它經常被用于與相對定位和浮動的協同工作。

回到我們最初的非定位示例,我們可以添加以下的CSS規則來實現絕對定位:

.positioned {
  position: absolute;
  background: yellow;
  top: 30px;
  left: 30px;
}

這里我們給我們的中間段一個positionabsolute值,并且和前面一樣加上 topleft屬性。但是,添加此代碼將給出以下結果:

這和之前截然不同!定位元素現在已經與頁面布局的其余部分完全分離,并位于頁面的頂部。其他兩段現在靠在一起,好像之前那個中間段落不存在一樣。topleft屬性對絕對位置元素的影響不同于相對位置元素。在這種情況下,他們沒有指定元素相對于原始位置的移動程度。相反,它們指定元素應該從頁面邊界的頂部和左邊的距離(確切地說,是 元素的距離)。

我們現在暫時不討論固定定位( fixed positioning )——它基本上以相同的方式工作,除了它仍然固定在瀏覽器窗口的邊緣,而不是它定位的父節點的邊緣。

CSS 表格

HTML表格對于顯示表格數據是很好的,但是很多年前——在瀏覽器中支持基本的CSS之前——web開發人員過去也常常使用表格來完成整個網頁布局——將它們的頁眉、頁腳、不同的列等等放在不同的表行和列中。這在當時是有效的,但它有很多問題——表布局是不靈活的,非常重的標記,難以調試和語義上的錯誤(比如,屏幕閱讀器用戶在導航表布局方面有問題)。

CSS表格的存在是為了讓您能夠像表格一樣布局元素,而不需要上面描述的任何問題——這聽起來可能有些奇怪,您應該使用表格元素作為表格數據,但有時這可能是有用的。例如,您可能想要列出一個表單,其中有標簽和文本輸入;這可能很棘手,但是CSS表使其變得容易。

讓我們來看一個例子。首先,創建HTML表單的一些簡單標記。每個輸入元素都有一個標簽,我們還在一個段落中包含了一個標題。為了進行布局,每個標簽/輸入對都封裝在

中。

First of all, tell us your name and age.

現在,我們例子中的CSS。除了使用 display屬性外,大多數CSS都是相當普通的。

,
, 被告知要分別顯示表、表行和表單元——基本上,它們會像HTML表格標記一樣,導致標簽和輸入在默認情況下排列整齊。我們所要做的就是添加一些大小、邊緣等等,讓一切看起來都好一點,我們就完成了。

你會注意到標題段落已經給出了 display: table-caption;——這使得它看起來就像一個表格 ——和caption-side: bottom; 讓標題在表格的底部下進行設計,即使標記是在源的輸入之前。這就能讓你有一點靈活的彈性。

html {
  font-family: sans-serif;
}

form {
  display: table;
  margin: 0 auto;
}

form div {
  display: table-row;
}

form label, form input {
  display: table-cell;
  margin-bottom: 10px;
}

form label {
  width: 200px;
  padding-right: 5%;
  text-align: right;
}

form input {
  width: 300px;
}

form p {
  display: table-caption;
  caption-side: bottom;
  width: 300px;
  color: #999;
  font-style: italic;
}

結果如下:

柔性盒子

CSS是一種功能強大的語言,它可以做很多事情,但它卻在布局上有所下降。傳統的老式布局方法,如floatpositioning工作,但有時它們會感覺比他們需要的更復雜、更靈活、更有彈性。例如,如果你想要:

  • 垂直中心盒子的內容(不僅僅是文本;line-height 將會失效)。
  • 制作幾列有相同的高度包含不同數量內容的列,不使用固定的高度,或用背景圖像偽裝。
  • 在一行中創建幾個盒子,占用相同數量的可用空間,不管有多少個,并且如果它們有內邊距,外邊距等就應用它。

上面的例子幾乎不可能通過常規的CSS實現——柔性盒子(或flexbox)是為了讓這些東西更容易實現而被發明的。

讓我們來看一個例子;首先,一些簡單的HTML:

This is a box
This is a box
This is a box

這里我們有一個

元素,里面有三個
,再加上幾個按鈕來創建一個新盒子,和重新設置demo。默認情況下,子元素不會被布局或改變大小,使用傳統的方法,我們必須仔細地對每個元素設置大小,允許寬度、外邊距、邊框和內邊距,如果我們添加了另一個子元素,我們就必須完全改變所有的值。

使用Flexbox替代它:

html {
  font-family: sans-serif;
}

section {
  width: 93%;
  height: 240px;
  margin: 20px auto;
  background: purple;
  display: flex;
}

div {
  color: white;
  background: orange;
  flex: 1;
  margin-right: 10px;
  text-shadow: 1px 1px 1px black;
}

div:last-child {
  margin-right: 0;
}

section, div {
  border: 5px solid rgba(0,0,0,0.85);
  padding: 10px;
}

這個CSS的兩行非常有趣:

  • display: flex; 告訴
    元素的子元素作為flexible boxes——默認情況下,它們都將展開以填充父類的可用高度,不管它是什么,并將其列出來——有足夠的寬度來包裝他們的內容。
  • flex: 1; 告訴每個
    元素,在行中獲得相同數量的空間,不管有多少。

為了進一步說明這是多么的神奇,我們還將添加一些JavaScript,以便您可以通過按下_Create box_按鈕來添加進一步的子

。

var section = document.querySelector("section");
var createBtn = document.querySelector(".create");
var resetBtn = document.querySelector(".reset");

function createBox() {
  var box = document.createElement("div");
  box.textContent = "This is a box";
  section.appendChild(box);
}

createBtn.onclick = createBox;

resetBtn.onclick = function() {
  while (section.firstChild) {
      section.removeChild(section.firstChild);
  }
  createBox();
  createBox();
  createBox();
}

這是一個例子——多試試見證Flexbox作為一個布局工具的強大。

網格布局

這里提到的最具實驗性的特性是CSS網格,它在瀏覽器中還沒有得到廣泛的支持。Web頁面通常使用網格系統布局,與打印媒體相同,這里的想法是通過定義一個網格來簡化這個過程,然后定義內容的哪些部分位于網格的每個區域。

目前的CSS網格在任何地方都還沒有得到真正的支持(除了Firefox和Chrome的實驗性版本)。
IE和Edge支持一種更舊的、過時的技術。這是我們將來可以期待的!

注意:為了更好地了解當前的網格框架和其他正在使用的技術,以及即將到來的原生CSS網格規范,請參閱我們的 Grids 文章。

【end】

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/2181.html

相關文章

  • CSS學習摘要-定位

    摘要:學習摘要定位學習摘要定位注全文摘自定位定位允許您從正常的文檔流布局中取出元素,并使它們具有不同的行為,例如放在另一個元素的上面,或者始終保持在瀏覽器視窗內的同一位置。使用上述四個屬性來精確指定要將定位元素移動到的位置。CSS學習摘要-定位 注:全文摘自MDN-CSS定位 定位允許您從正常的文檔流布局中取出元素,并使它們具有不同的行為,例如放在另一個元素的上面,或者始終保持在瀏覽器視窗內的同一...

    beanlam 評論0 收藏0
  • CSS學習摘要-盒子模型

    摘要:你也可以單獨設置某一個邊的三個不同屬性,如,等。屬性設置與元素相關聯的盒子模型的左外邊距。首先是我們的代碼然后是代碼上述代碼產生以下結果輪廓輪廓最后,還有重要的一點,一個框的是一個看起來像是邊界但又不屬于框模型的東西。注:全文摘要自網絡開發者網站,當然間隔也會整理一些思路和格式排版添加進去。 CSS框模型(譯者注:也被稱為盒模型)是網頁布局的基礎 ——每個元素被表示為一個矩形的方框,框的內容...

    keithxiaoy 評論0 收藏0
  • CSS學習摘要-浮動與清除浮動

    摘要:為了實現這個效果,我們需要清除浮動。元素被向下移動用于清除之前的左右浮動。塊格式化上下文對浮動定位與清除浮動都很重要。浮動定位和清除浮動時只會應用于同一個內的元素。且為了不影響接下來的文檔標準流,往往也要收尾做出清除浮動。以下從浮動到BFC的段落 摘自MDN 網絡開發者float 浮動float CSS屬性指定一個元素應沿其容器的左側或右側放置,允許文本和內聯元素環繞它。該元素從網頁的正常流...

    番茄西紅柿 評論0 收藏0
  • JS / CSS 常用實戰代碼片段

    摘要:常用模式片段之摘要第一次看到這個字眼是在中,即。之后也見到一些別人的代碼里有,它和頁面的有什么關系,以及和有何淵源。以前都見過這些詞,但都似懂非懂,今天查了些資料收集了些代碼,做個完整的理解。 CSS篇 常用模式片段之CSS布局篇 http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html 摘要:position 拉伸性質...

    sutaking 評論0 收藏0
  • JS / CSS 常用實戰代碼片段

    摘要:常用模式片段之摘要第一次看到這個字眼是在中,即。之后也見到一些別人的代碼里有,它和頁面的有什么關系,以及和有何淵源。以前都見過這些詞,但都似懂非懂,今天查了些資料收集了些代碼,做個完整的理解。 CSS篇 常用模式片段之CSS布局篇 http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html 摘要:position 拉伸性質...

    stackfing 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<