SS中的浮動(Floats)、定位(Positioning)和顯示(Display)屬性是前端工程師掌握頁面布局的關(guān)鍵。本文將深入探討這些屬性的工作原理和使用場景,幫助開發(fā)者更好地理解和運用它們來構(gòu)建響應式和精確的網(wǎng)頁布局。
浮動是CSS中用于實現(xiàn)元素排列的一種方式,它可以讓元素脫離正常的文檔流,并可以向左或向右移動,直到它的外邊緣碰到包含框或另一個浮動元素的邊緣。
.element {
float: left; /* 或者 'right' */
}
.clear-element {
clear: both; /* 可以是 'left', 'right', 或 'both' */
}
定位屬性允許你控制元素的位置,它可以是相對于它的正常位置、相對于最近的已定位祖先元素、相對于視口或絕對位置。
.element {
position: static | relative | absolute | fixed | sticky;
}
.relative-element {
position: relative;
top: 10px;
left: 20px;
}
.absolute-element {
position: absolute;
top: 0;
right: 0;
}
.fixed-element {
position: fixed;
bottom: 0;
left: 0;
}
.sticky-element {
position: sticky;
top: 10px;
}
display屬性是CSS中最重要的用于控制布局的屬性之一,它定義了元素如何顯示在頁面上。
.element {
display: block | inline | inline-block | flex | grid | none;
}
.block-element {
display: block;
}
.inline-element {
display: inline;
}
.inline-block-element {
display: inline-block;
}
.flex-container {
display: flex;
}
.grid-container {
display: grid;
}
.hidden-element {
display: none;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Float, Position, and Display Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="header">
<div class="logo">Logo</div>
<div class="navigation">Navigation</div>
</div>
<div class="main-content">
<div class="sidebar">Sidebar</div>
<div class="content">Content</div>
</div>
<div class="footer">Footer</div>
<div class="fixed-element">Fixed Element</div>
</body>
</html>
/* Reset some default styles */
body, h1, p {
margin: 0;
padding: 0;
}
/* Header styles */
.header {
background-color: #f8f8f8;
border-bottom: 1px solid #e7e7e7;
padding: 10px;
overflow: hidden; /* Clearfix for floated elements */
}
.logo {
float: left;
font-size: 24px;
}
.navigation {
float: right;
font-size: 18px;
}
/* Main content styles */
.main-content {
padding: 20px;
}
.sidebar {
float: left;
width: 200px;
background-color: #ddd;
padding: 10px;
}
.content {
margin-left: 220px; /* Make space for the sidebar */
background-color: #eee;
padding: 10px;
}
/* Footer styles */
.footer {
background-color: #f8f8f8;
border-top: 1px solid #e7e7e7;
text-align: center;
padding: 10px;
position: relative; /* For demonstration purposes */
top: 20px; /* Move the footer down a bit */
}
/* Fixed element styles */
.fixed-element {
position: fixed;
bottom: 10px;
right: 10px;
padding: 5px 10px;
background-color: #333;
color: #fff;
z-index: 1000; /* Ensure it stays on top */
}
/* Clearfix hack */
.clearfix::after {
content: "";
clear: both;
display: table;
}
在這個例子中,我們創(chuàng)建了一個包含頭部、側(cè)邊欄、主要內(nèi)容和頁腳的基本布局。我們使用浮動來對齊頭部的Logo和導航,以及創(chuàng)建一個側(cè)邊欄。我們還使用了相對定位來稍微下移頁腳,并使用固定定位為頁面添加了一個始終可見的固定元素。最后,我們使用了overflow: hidden;來清除頭部中浮動元素的影響。
浮動、定位和顯示屬性是CSS中構(gòu)建復雜布局的強大工具。通過深入理解和正確應用這些屬性,前端工程師可以創(chuàng)建出既美觀又功能強大的網(wǎng)頁。隨著Web標準的不斷發(fā)展,我們也需要不斷學習和適應新的CSS特性,以保持我們技能的前沿性。
HTML(HyperTextMark-upLanguage)即超文本標記語言或超文本鏈接標示語言,是WWW的描述語言。
HTML文檔的結(jié)構(gòu)
2.頁面背景色或背景圖像
Hello World!
</body>
(網(wǎng)頁背景圖像)
Hello World!
</body>
(網(wǎng)頁背景色彩)
3.文本相關(guān)標簽
標題標簽<h1>-<h6>,<font>標簽。
段落標簽<p>,換行標簽<br>。
<h#> ... </h#>,#=1, 2, 3, 4, 5, 6 (說明:<h1>到<h6>字體大小依次遞減)
<sub>下標文字,<sup>上標文字,<del>刪除線。
段落標簽<p>,換行標簽<br>。
<HR> 標簽用于在頁面上繪制水平線。
圖像的基本語法:<img src=“images/adv_2.jpg” width=“300” height=“150” alt=“在線報名” >
要鏈接到同一目錄 (C:\HTML) 下的頁面,可編寫 <A HREF = “Doc1.htm”> 或 <A HREF = “C:\html\Doc2.htm”>
鏈接到本頁面:
<a href=“http://www.it.com”>
<img src=“images/adv_2.jpg” border=“0” width="300"height="150">
</a>
<marquee scrolldelay=“100” direction=“up”>
滾動文字或圖像
</marquee>
說明:scrolldelay:表示滾動延遲時間,默認值為90;direction:表示滾動的方向,默認為從右向左。
目標:掌握列表的用法
使用表格的基本結(jié)構(gòu)實現(xiàn)簡單表格
使用表格相關(guān)標簽實現(xiàn)跨行、跨列的復雜表格
會使用表單的基本結(jié)構(gòu)制作表單頁面
會使用各種表單元素實現(xiàn)注冊頁面
能理解post和get兩種提交方式的區(qū)別
格式: <ul type=“”>
type屬性設(shè)置標號的類型,值可以取:
1 disc :實心圓點
2 circle :空心圓點
3 square :實心方塊
無序列表
格式:<ol type=“” start=“”>
type設(shè)置標號的類型,值可以取:
1 1:顯示數(shù)字
2 A:顯示大寫字母
3 a:顯示小寫字母
4 I:顯示大寫羅馬數(shù)字
5 i:顯示小寫羅馬數(shù)字
有序列表
嵌套列表
門戶網(wǎng)站應用表格
<table>...</ table >定義表格
創(chuàng)建表格
表格表現(xiàn)
域名數(shù)量報表的創(chuàng)建
域名數(shù)量報表
1.跨多列的表格
2.跨多行的表格
3.如何創(chuàng)建跨行跨列的表格
品牌商城表的創(chuàng)建
width用來設(shè)置表格的寬度;height用來設(shè)置表格的高度;border用來設(shè)置表格邊框尺寸大小;bordercolor用來設(shè)置表格邊框顏色。
品牌商城表
背景:background屬性用來設(shè)置表格的背景圖片;bgcolor屬性用來設(shè)置表格、行、列的背景色。
對其方式:align屬性用來設(shè)置表格、行、列的對齊方式。
<input type=“text” value="張三" size="20">
文本框的建設(shè)
文本框
<input type=“password” value=“123456” size=“22”>
密碼框的建設(shè)
密碼框,22個字符寬度
<input type="radio" value="男" checked="checked">
單選按鈕的建設(shè)
單選按鈕框
<input type=“checkbox” name="cb2" value="talk">
<textarea name=“textarea” cols=“40” rows=“6”>內(nèi)容</textarea>
<input type="reset" name=“reset" value=" 重填 ">
其他表單元素:<input type=“hidden”/>表單隱藏域
<input type=“image”/>表單圖片按鈕
<input type=“file”/>文件瀏覽
<label>標簽可以綁定某個表單元素,用于擴展可以相應點擊等事件的區(qū)域
如:當點擊復選框右邊的提示文字時,該復選框也可被選中。
內(nèi)容有限,關(guān)于css,div和網(wǎng)頁布局的部分就下次在和大家分享吧!
者:伯樂在線/chokcoco
http://web.jobbole.com/95068/
何為滾動視差
視差滾動(Parallax Scrolling)是指讓多層背景以不同的速度移動,形成立體的運動效果,帶來非常出色的視覺體驗。 作為網(wǎng)頁設(shè)計的熱點趨勢,越來越多的網(wǎng)站應用了這項技術(shù)。
通常而言,滾動視差在前端需要輔助 Javascript 才能實現(xiàn)。當然,其實 CSS 在實現(xiàn)滾動視差效果方面,也有著不俗的能力。下面就讓我們來見識一二:
認識 background-attachment
background-attachment 算是一個比較生僻的屬性,基本上平時寫業(yè)務樣式都用不到這個屬性。但是它本身很有意思。
background-attachment:如果指定了 background-image ,那么 background-attachment 決定背景是在視口中固定的還是隨著包含它的區(qū)塊滾動的。
單單從定義上有點難以理解,隨下面幾個 Demo 了解下 background-attachment 到底是什么意思:
background-attachment: scroll
scroll 此關(guān)鍵字表示背景相對于元素本身固定, 而不是隨著它的內(nèi)容滾動。
background-attachment: local
local 此關(guān)鍵字表示背景相對于元素的內(nèi)容固定。如果一個元素擁有滾動機制,背景將會隨著元素的內(nèi)容滾動, 并且背景的繪制區(qū)域和定位區(qū)域是相對于可滾動的區(qū)域而不是包含他們的邊框。
background-attachment: fixed
fixed 此關(guān)鍵字表示背景相對于視口固定。即使一個元素擁有滾動機制,背景也不會隨著元素的內(nèi)容滾動。
注意一下 scroll 與 fixed,一個是相對元素本身固定,一個是相對視口固定,有點類似 position 定位的 absolute 和 fixed。
可以感受下 3 種不同取值的不同效果:
CodePen Demo — bg-attachment Demo(https://codepen.io/Chokcoco/pen/xJJorg)
使用 background-attachment: fixed 實現(xiàn)滾動視差
首先,我們使用 background-attachment: fixed 來實現(xiàn)滾動視差。fixed 此關(guān)鍵字表示背景相對于視口固定。即使一個元素擁有滾動機制,背景也不會隨著元素的內(nèi)容滾動。
這里的關(guān)鍵在于,即使一個元素擁有滾動機制,背景也不會隨著元素的內(nèi)容滾動。也就是說,背景圖從一開始就已經(jīng)被固定死在初始所在的位置。
我們使用,圖文混合排布的方式,實現(xiàn)滾動視差,HTML 結(jié)構(gòu)如下,.g-word 表示內(nèi)容結(jié)構(gòu),.g-img 表示背景圖片結(jié)構(gòu):
<section class="g-word">Header</section>
<section class="g-img">IMG1</section>
<section class="g-word">Content1</section>
<section class="g-img">IMG2</section>
<section class="g-word">Content2</section>
<section class="g-img">IMG3</section>
<section class="g-word">Footer</section>
關(guān)鍵 CSS:
section {
height: 100vh;
}
.g-img {
background-image: url(...);
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
效果如下:
CodePen Demo — https://codepen.io/Chokcoco/pen/JBaQoY(https://codepen.io/Chokcoco/pen/JBaQoY)
嗯?有點神奇,為什么會是這樣呢?可能很多人會和我一樣,第一次接觸這個屬性對這樣的效果感到懵逼。
我們把上面 background-attachment: fixed 注釋掉,或者改為 background-attachment: local,再看看效果:
CodePen Demo — bg-attachment:local(https://codepen.io/Chokcoco/pen/ZjMdJz)
這次,圖片正常跟隨滾動條滾動了,按常理,這種效果才符合我們大腦的思維。
而滾動視差效果,正是不按常理出牌的一個效果,重點來了:
當頁面滾動到圖片應該出現(xiàn)的位置,被設(shè)置了 background-attachment: fixed 的圖片并不會繼續(xù)跟隨頁面的滾動而跟隨上下移動,而是相對于視口固定死了。
好,我們再來試一下,如果把所有 .g-word 內(nèi)容區(qū)塊都去掉,只剩下全部設(shè)置了 background-attachment: fixed 的背景圖區(qū)塊,會是怎么樣呢?
HTML 代碼如下:
<section class="g-img">IMG1</section>
<section class="g-img">IMG2</section>
<section class="g-img">IMG3</section>
section {
height: 100vh;
}
.g-img {
background-image: url(...);
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
效果如下:
CodePen Demo(https://codepen.io/Chokcoco/pen/oMPrGZ)
結(jié)合這張 GIF,相信能對 background-attachment: fixed 有個更深刻的認識,移動的只有視口,而背景圖是一直固定死的。
綜上,就是 CSS 使用 background-attachment: fixed 實現(xiàn)滾動視差的一種方式,也是相對而言比較容易的一種。當然,background-attachment: fixed 本身的效果并不僅只是能有用來實現(xiàn)滾動視差效果,合理運用,還可以實現(xiàn)其他很多有趣的效果,這里簡單再列一個:
background-attachment: fixed 實現(xiàn)圖片點擊水紋效果
利用圖片相對視口固定,可以有很多有趣的效果,譬如下面這個,來源于這篇文章CSS Water Wave (水波效果):
CodePen Demo — bg-attachment:fixed Wave(https://codepen.io/Chokcoco/pen/wxYZWO)
利用圖片相對視口固定的特性實現(xiàn)點擊的水紋效果。
上面這個效果有點瑕疵,圖片在放大容器變大的過程中發(fā)生了明顯的抖動。當然,效果還是可以的,background-attachment 還有很多有意思的效果可以挖掘。
使用 transform: translate3d 實現(xiàn)滾動視差
言歸正傳,下面介紹另外一種使用 CSS 實現(xiàn)的滾動視差效果,利用的是 CSS 3D。
原理就是:
關(guān)于 transform-style: preserve-3d 以及 perspective 本文不做過多篇幅展開,默認讀者都有所了解,還不是特別清楚的,可以先了解下 CSS 3D。
核心代碼表示就是:
<div class="g-container">
<div class="section-one">translateZ(-1)</div>
<div class="section-two">translateZ(-2)</div>
<div class="section-three">translateZ(-3)</div>
</div>
html {
height: 100%;
overflow: hidden;
}
body {
perspective: 1px;
transform-style: preserve-3d;
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
}
.g-container {
height: 150%;
.section-one {
transform: translateZ(-1px);
}
.section-two {
transform: translateZ(-2px);
}
.section-three {
transform: translateZ(-3px);
}
}
總結(jié)就是父元素設(shè)置 transform-style: preserve-3d 和 perspective: 1px,子元素設(shè)置不同的 transform: translateZ,滾動滾動條,效果如下:
CodePen Demo — CSS 3D parallax(https://codepen.io/Chokcoco/pen/EpOeRm)
很明顯,當滾動滾動條時,不同子元素的位移程度從視覺上看是不一樣的,也就達到了所謂的滾動視差效果。
滾動視差文字陰影/虛影效果
那么,運用 translate3d 的視差效果,又能有一些什么好玩的效果呢?下面這個滾動視差文字陰影/虛影效果很有意思:
CodePen Demo — CSS translate3d Parallax(https://codepen.io/Chokcoco/pen/XBgBBp)
當然,通過調(diào)整參數(shù)(perspective: ?px 以及 transform: translateZ(-?px);),還能有其他很有意思的效果出現(xiàn):
CodePen Demo — CSS translate3d Parallax 2(https://codepen.io/Chokcoco/pen/PBXwdX)
是不是很有電影開片的廠商 LOGO 的特效的感覺 joy 。
師父領(lǐng)進門,修行在個人,怎么制作更好更有意思的效果還是需要花時間鉆研和琢磨,這里我僅僅是拋磚引玉,希望能見到更多 Nice 的效果。
好了,本文到此結(jié)束,希望對你有幫助 :)
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。