摘要:注全文摘自介紹布局頁面布局技術允許我們拾取網頁中的元素,并且控制它們相對正常布局流周邊元素父容器或者主視口窗口的位置。添加此代碼將給出以下結果絕對定位絕對定位絕對定位用于將元素移動到頁面的任何位置,以創建復雜的布局。
注:全文摘自MDN-介紹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
— 默認值, 不浮動。下面展示了如何用浮動來創建一個簡單的兩列布局。首先看一下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.
代碼中有一個一級標題和兩個簡單的 下面讓我們將兩個 修改過的代碼如下: 定位技術(position)允許我們將一個元素從它在頁面的原始位置準確地移動到另外一個位置。 有四種主要的定位類型需要我們了解: 我們將展示一些示例代碼來熟悉這些布局技術. 這些示例代碼都作用在相同的HTML上: I am a basic block level element. I am a basic block level element. I am a basic block level element. 該HTML將使用以下CSS默認樣式: 渲染效果如下: 相對定位通常用來對布局進行微調,比如將一個圖標往下調一點,以便放置文字. 我們可以通過下面的規則添加相對定位來實現效果: 這里我們給中間段落一個 添加此代碼將給出以下結果: 絕對定位用于將元素移動到web頁面的任何位置,以創建復雜的布局。有趣的是,它經常被用于與相對定位和浮動的協同工作。 回到我們最初的非定位示例,我們可以添加以下的CSS規則來實現絕對定位: 這里我們給我們的中間段一個 這和之前截然不同!定位元素現在已經與頁面布局的其余部分完全分離,并位于頁面的頂部。其他兩段現在靠在一起,好像之前那個中間段落不存在一樣。 我們現在暫時不討論固定定位( fixed positioning )——它基本上以相同的方式工作,除了它仍然固定在瀏覽器窗口的邊緣,而不是它定位的父節點的邊緣。 HTML表格對于顯示表格數據是很好的,但是很多年前——在瀏覽器中支持基本的CSS之前——web開發人員過去也常常使用表格來完成整個網頁布局——將它們的頁眉、頁腳、不同的列等等放在不同的表行和列中。這在當時是有效的,但它有很多問題——表布局是不靈活的,非常重的標記,難以調試和語義上的錯誤(比如,屏幕閱讀器用戶在導航表布局方面有問題)。 CSS表格的存在是為了讓您能夠像表格一樣布局元素,而不需要上面描述的任何問題——這聽起來可能有些奇怪,您應該使用表格元素作為表格數據,但有時這可能是有用的。例如,您可能想要列出一個表單,其中有標簽和文本輸入;這可能很棘手,但是CSS表使其變得容易。 讓我們來看一個例子。首先,創建HTML表單的一些簡單標記。每個輸入元素都有一個標簽,我們還在一個段落中包含了一個標題。為了進行布局,每個標簽/輸入對都封裝在 現在,我們例子中的CSS。除了使用 你會注意到標題段落已經給出了 結果如下: CSS是一種功能強大的語言,它可以做很多事情,但它卻在布局上有所下降。傳統的老式布局方法,如 上面的例子幾乎不可能通過常規的CSS實現——柔性盒子(或flexbox)是為了讓這些東西更容易實現而被發明的。 讓我們來看一個例子;首先,一些簡單的HTML: 這里我們有一個 使用Flexbox替代它: 這個CSS的兩行非常有趣: 為了進一步說明這是多么的神奇,我們還將添加一些JavaScript,以便您可以通過按下_Create box_按鈕來添加進一步的子 這是一個例子——多試試見證Flexbox作為一個布局工具的強大。 這里提到的最具實驗性的特性是CSS網格,它在瀏覽器中還沒有得到廣泛的支持。Web頁面通常使用網格系統布局,與打印媒體相同,這里的想法是通過定義一個網格來簡化這個過程,然后定義內容的哪些部分位于網格的每個區域。 目前的CSS網格在任何地方都還沒有得到真正的支持(除了Firefox和Chrome的實驗性版本)。 注意:為了更好地了解當前的網格框架和其他正在使用的技術,以及即將到來的原生CSS網格規范,請參閱我們的 Grids 文章。 【end】 文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。 轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/2181.html 摘要:學習摘要定位學習摘要定位注全文摘自定位定位允許您從正常的文檔流布局中取出元素,并使它們具有不同的行為,例如放在另一個元素的上面,或者始終保持在瀏覽器視窗內的同一位置。使用上述四個屬性來精確指定要將定位元素移動到的位置。CSS學習摘要-定位
注:全文摘自MDN-CSS定位
定位允許您從正常的文檔流布局中取出元素,并使它們具有不同的行為,例如放在另一個元素的上面,或者始終保持在瀏覽器視窗內的同一... 摘要:你也可以單獨設置某一個邊的三個不同屬性,如,等。屬性設置與元素相關聯的盒子模型的左外邊距。首先是我們的代碼然后是代碼上述代碼產生以下結果輪廓輪廓最后,還有重要的一點,一個框的是一個看起來像是邊界但又不屬于框模型的東西。注:全文摘要自網絡開發者網站,當然間隔也會整理一些思路和格式排版添加進去。
CSS框模型(譯者注:也被稱為盒模型)是網頁布局的基礎 ——每個元素被表示為一個矩形的方框,框的內容... 摘要:為了實現這個效果,我們需要清除浮動。元素被向下移動用于清除之前的左右浮動。塊格式化上下文對浮動定位與清除浮動都很重要。浮動定位和清除浮動時只會應用于同一個內的元素。且為了不影響接下來的文檔標準流,往往也要收尾做出清除浮動。以下從浮動到BFC的段落 摘自MDN 網絡開發者float 浮動float CSS屬性指定一個元素應沿其容器的左側或右側放置,允許文本和內聯元素環繞它。該元素從網頁的正常流... 摘要:常用模式片段之摘要第一次看到這個字眼是在中,即。之后也見到一些別人的代碼里有,它和頁面的有什么關系,以及和有何淵源。以前都見過這些詞,但都似懂非懂,今天查了些資料收集了些代碼,做個完整的理解。
CSS篇
常用模式片段之CSS布局篇
http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html
摘要:position 拉伸性質... 摘要:常用模式片段之摘要第一次看到這個字眼是在中,即。之后也見到一些別人的代碼里有,它和頁面的有什么關系,以及和有何淵源。以前都見過這些詞,但都似懂非懂,今天查了些資料收集了些代碼,做個完整的理解。
CSS篇
常用模式片段之CSS布局篇
http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html
摘要:position 拉伸性質... 閱讀 3772·2021-11-23 09:51 閱讀 4385·2021-11-15 11:37 閱讀 3522·2021-09-02 15:21 閱讀 2745·2021-09-01 10:31 閱讀 878·2021-08-31 14:19 閱讀 851·2021-08-11 11:20 閱讀 3307·2021-07-30 15:30 閱讀 1688·2019-08-30 15:54整列浮動
left
,另外一個浮動為 right
。這意味著它們其中一個往左靠,另外一個往右靠。給這兩個元素分別設置 width
值,使得它們能夠在同一行放下來,并且設置一個水平的間距(總寬度不要大于100!).
div:nth-of-type(1) {
width: 48%;
float: left;
}
div:nth-of-type(2) {
width: 48%;
float: right;
}
定位技術
元素邊緣固定,或者相對于離元素最近的被定位的祖先元素(ancestor element)。絕對定位在創建復雜布局效果時非常有用,例如通過標簽顯示和隱藏的內容面板或者通過按鈕控制滑動到屏幕中的信息面板.
簡單定位示例
Positioning
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
值——這屬性本身不做任何事情,所以我們還添加了top
和left
屬性。這些可以將受影響的元素向下向右移——這可能看起來和你所期待的相反,但你需要把它看成是左邊和頂部的元素被“推開”一定距離,這就導致了它的向下向右移動。絕對定位
.positioned {
position: absolute;
background: yellow;
top: 30px;
left: 30px;
}
position
的 absolute
值,并且和前面一樣加上 top
和left
屬性。但是,添加此代碼將給出以下結果:top
和left
屬性對絕對位置元素的影響不同于相對位置元素。在這種情況下,他們沒有指定元素相對于原始位置的移動程度。相反,它們指定元素應該從頁面邊界的頂部和左邊的距離(確切地說,是 元素的距離)。
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;
}
柔性盒子
float
和positioning
工作,但有時它們會感覺比他們需要的更復雜、更靈活、更有彈性。例如,如果你想要:
line-height
將會失效)。元素,里面有三個
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;
}
display: flex;
告訴元素的子元素作為flexible boxes——默認情況下,它們都將展開以填充父類的可用高度,不管它是什么,并將其列出來——有足夠的寬度來包裝他們的內容。
flex: 1;
告訴每個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();
}
網格布局
IE和Edge支持一種更舊的、過時的技術。這是我們將來可以期待的!相關文章
CSS學習摘要-定位
CSS學習摘要-盒子模型
CSS學習摘要-浮動與清除浮動
JS / CSS 常用實戰代碼片段
JS / CSS 常用實戰代碼片段
發表評論
0條評論
bigdevil_s
男|高級講師
TA的文章
閱讀更多
1
關于安裝wireshark中npcap一直無法安裝以及winpcap無法安裝解決方法
工資低?裸辭?項目黃?走了多少彎路只有我自己知道!
Zoom 公布其“1 億美元發展基金”的首輪投資名單
酷銳云:周年慶第二波,新上香港、美國GIA直連線路特價套餐,限量20臺
HOSTMEM ,$10/年, 1核/512M內存/10GB SSD/500GB流量/1G帶寬
傲游主機:美國CN2/香港CN2/德國CN2/荷蘭CN2/香港高防VPS全場8折
一個圖片偶爾加載不出來的事故