達標要求
-
掌握元素的顯示與隱藏
-
熟練應用溢出的文字隱藏
-
熟練掌握版心和布局流程
1. 元素的顯示與隱藏
在CSS中有三個顯示和隱藏的單詞比較常見,我們要區分開,他們分別是 display visibility 和 overflow。
他們的主要目的是讓一個元素在頁面中消失,但是不在文檔源碼中刪除。 最常見的是網站廣告。
1.1 display 顯示
display 設置或檢索對象是否及如何顯示。
display : none 隱藏對象 與它相反的是 display:block 除了轉換為塊級元素之外,同時還有顯示元素的意思。
特點: 隱藏之后,不再保留位置。
1.2 visibility 可見性
設置或檢索是否顯示對象。
visible : 對象可視
hidden : 對象隱藏
特點: 隱藏之后,繼續保留原有位置。
1.3 overflow 溢出
檢索或設置當對象的內容超過其指定高度及寬度時如何管理內容。
visible : 不剪切內容也不添加滾動條。
auto : 超出自動顯示滾動條,不超出不顯示滾動條
hidden : 不顯示超過對象尺寸的內容,超出的部分隱藏掉
scroll : 不管超出內容否,總是顯示滾動條
1.4顯示與隱藏總結
屬性 | 區別 | 用途 |
---|---|---|
display | 隱藏對象,不保留位置 | 配合后面js做特效,比如下拉菜單,原先沒有,鼠標經過,顯示下拉菜單, 應用極為廣泛 |
visibility | 隱藏對象,保留位置 | 使用較少 |
overflow | 只是隱藏超出大小的部分 | 1. 可以清除浮動 2. 保證盒子里面的內容不會超出該盒子范圍 |
2. CSS用戶界面樣式
所謂的界面樣式, 就是更改一些用戶操作樣式, 比如 更改用戶的鼠標樣式, 表單輪廓等。但是比如滾動條的樣式改動受到了很多瀏覽器的抵制,因此我們就放棄了。 防止表單域拖拽
2.1 鼠標樣式cursor
設置或檢索在對象上移動的鼠標指針采用何種系統預定義的光標形狀。
cursor : default 小白 | pointer 小手 | move 移動 | text 文本 | not-allowed
鼠標放我身上查看效果哦:
<ul><li style="cursor:default">我是小白</li><li style="cursor:pointer">我是小手</li><li style="cursor:move">我是移動</li><li style="cursor:text">我是文本</li><li style="cursor:not-allowed"> 禁止</li> </ul>
2.2 pointer-events(了解)
.disabled {pointer-events: none; }
-
阻止用戶的點擊動作產生任何效果
-
阻止缺省鼠標指針的顯示
-
阻止CSS里的
hover
和active
狀態的變化觸發事件 -
阻止JavaScript點擊動作觸發的事件
2.3 輪廓 outline
是繪制于元素周圍的一條線,位于邊框邊緣的外圍,可起到突出元素的作用。
outline : outline-color ||outline-style || outline-width
p{outline: #00FF00 dotted thick;}
但是我們都不關心可以設置多少,我們平時都是去掉的。
最直接的寫法是 : outline: 0; 或者 outline: none;
<input type="text" style="outline: 0;"/>
2.4 vertical-align 垂直對齊
以前我們講過讓帶有寬度的塊級元素居中對齊,是margin: 0 auto;
以前我們還講過讓文字居中對齊,是 text-align: center;
但是我們從來沒有講過有垂直居中的屬性, 我們的媽媽一直很擔心我們的垂直居中怎么做。
vertical-align 垂直對齊, 這個看上去很美好的一個屬性, 實際有著不可捉摸的脾氣,否則我們也不會這么晚來講解。
vertical-align : baseline |top |middle |bottom
設置或檢索對象(圖片、表單)內容的垂直對其方式,樣式設定到圖片或表單的選擇器上。
值 | 描述 |
---|---|
baseline | 默認。元素放置在父元素的基線上。 |
top | 把元素的頂端與行中最高元素的頂端對齊 |
middle | 把此元素放置在父元素的中部。 |
bottom | 把元素的頂端與行中最低的元素的頂端對齊。 |
vertical-align 不影響塊級元素中的內容對齊,它只針對于 行內元素或者行內塊元素,特別是行內塊元素, 通常用來控制圖片/表單與文字的對齊。
所以我們知道,我們可以通過vertical-align 控制圖片和文字的垂直關系了。 默認的圖片會和文字基線對齊。
3. 溢出的文字隱藏
3.1 word-break:自動換行
normal 使用瀏覽器默認的換行規則。
break-all 允許在單詞內換行。
keep-all 只能在半角空格或連字符處換行。
主要處理英文單詞
3.2 white-space
如何處理元素內的空白
屬性名 | white-space |
---|---|
屬性值 | normal | nowrap |
默認值 | normal |
描述 | 設置如何處理元素內的空白 |
-
normal:默認處理方式。空白會被瀏覽器忽略
-
nowrap:強制在同一行內顯示所有文本,合并文本間的多余空白,直到文本結束或者遭遇br對象。
下面的表格給總結了 white-space
屬性的行為:
值 | 空白符 | 換行符 | 自動換行 |
---|---|---|---|
normal | 合并 | 忽略 | 允許 |
nowrap | 合并 | 忽略 | 不允許 |
3.3 text-overflow 文字溢出
text-overflow : clip | ellipsis
設置或檢索是否使用一個省略標記(...)標示對象內文本的溢出
clip : 不顯示省略標記(...),而是簡單的裁切
ellipsis : 當對象內文本溢出時顯示省略標記(...)
注意一定要首先強制一行內顯示,再次和overflow屬性 搭配使用
.hid-kk{width: 100px;height: 100px;display: block;/*1. 先強制一行內顯示文本*/white-space: nowrap;/*2. 超出的部分隱藏*/overflow: hidden;/*3. 文字用省略號替代超出的部分*/text-overflow: ellipsis; }
4. CSS的書寫順序
(1)定位屬性:position display float left top right bottom overflow clear z-index
(2)自身屬性:width height padding border margin background
(3)文字樣式:font-family font-size font-style font-weight font-varient color
(4)文本屬性:text-align vertical-align text-wrap text-transform text-indent text-decoration letter-spacing word-spacing white-space text-overflow
(5)css3中新增屬性:content box-shadow border-radius transform……
按照上述1 2 3 4 5的順序進行書寫。
目的:減少瀏覽器reflow(回流),提升瀏覽器渲染dom的性能
原理:瀏覽器的渲染流程
5. 版心和布局流程
閱讀報紙時容易發現,雖然報紙中的內容很多,但是經過合理地排版,版面依然清晰、易讀。同樣,在制作網頁時,要想使頁面結構清晰、有條理,也需要對網頁進行“排版”。
“版心”(可視區) 是指網頁中主體內容所在的區域。一般在瀏覽器窗口中水平居中顯示,常見的寬度值為960px、980px、1000px、1200px等。
5.1 布局流程
為了提高網頁制作的效率,布局時通常需要遵守一定的布局流程,具體如下:
1、確定頁面的版心(可視區)。
2、分析頁面中的行模塊,以及每個行模塊中的列模塊。
3、制作HTML結構 。
4、CSS初始化,然后開始運用盒子模型的原理,通過DIV+CSS布局來控制網頁的各個模塊。
5.2 一列固定寬度且居中
最為常用的結構
5.3 兩列左窄右寬型
比如:小米官網
5.4 通欄平均分布型
比如:中嵐簽證
6. BFC(塊級格式化上下文)
6.1 什么是BFC
BFC(Block formatting context)直譯為"塊級格式化上下文"。
在官方文檔到中介紹:一個BFC區域包含創建該上下文元素的所有子元素,BFC是一塊塊獨立的渲染區域,可以將BFC看成是元素的一種屬性,擁有了這種屬性的元素就會使他的子元素與世隔絕,不會影響到外部其他元素。
6.2 如何創建BFC
-
html根元素
-
設置浮動,float的值是left或者right
-
設置定位
-
position不是static或者relative
-
是absoulte或者fixed
-
-
display的值是inline-block,table-cell(表格單元格)等
-
設置overflow
-
overflow的值不是visible
-
是hidden,auto,scroll
-
-
彈性布局,flex
6.3 利用BFC解決問題
-
解決外邊距的塌陷問題(垂直塌陷)
-
利用BFC解決包含塌陷
-
清除浮動產生的影響
-
BFC可以阻止標準流元素被浮動元素覆蓋
注意點:
-
一個BFC區域只包含其子元素,不包括其子元素的子元素。
-
并不是所有的元素都能成為一塊BFC區域,只有當這個元素滿足條件的時候才會成為一塊BFC區域。
-
不同的BFC區域之間是相互獨立的,互不影響的。利用這個特性我們可以讓不同BFC區域之間的布局不產生影響
-
7.擴展
web前端開發規范
常見css類名