CSS進階內容——布局技巧和細節修飾
我們在之前的文章中已經掌握了CSS的大部分內容,但仍有一些內容我們沒有涉略,這篇文章就是為了補充前面沒有涉及的內容,為我們的知識做出補充并且介紹一些布局技巧
當然,如果沒有學習之前的知識,可以到我的主頁中查看之前的文章:秋落雨微涼 - 博客園,
元素的顯示與隱藏
在我們的網頁設計中,也許會有廣告的設計部分
廣告旁常常存在×號來進行廣告的關閉,而這部分內容在CSS中就被稱為元素的顯示與隱藏
本質:
- 讓一個元素在頁面中隱藏或顯示出來
我們常常提供三種方法:
-
display
-
visibility
-
overflow
讓我們分開一一介紹:
display方法(重點:JS搭配使用)
display屬性用來設定一個元素應如何顯示
我們常用的屬性有:
- display:none 隱藏元素
- display:block 使元素轉化為塊級元素并且顯示元素
注意:當display設定為none時,原有位置不再占用!!!
我們下面給出代碼示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 當我們將display變化為none時,不僅元素隱藏,而且其原有位置也不再占有 -->
<style>
.peiqi {
height: 200px;
width: 200px;
background-color: aqua;
/* 當我們把display設定為none,元素隱藏,且原有位置不再占有,下方的div會占用當前div的位置 */
display: none;
}
.qiaozhi {
height: 200px;
width: 200px;
background-color: red;
/* 想讓元素重新出現,可以設定為block,block通常為默認選項,不用設定 */
display: block;
}
</style>
</head>
<body>
<div ></div>
<div ></div>
</body>
</html>
display常與JS搭配使用,我們在后面章節講到JS會詳細講述
visibility方法
visibility屬性用來表示元素隱藏或者顯示
我們常用的屬性有:
- visibility:hidden 隱藏
- visibility:visible 顯示
注意:當visibility元素為hidden時,元素雖然隱藏,但仍保留原來位置,下方元素無法占用!!!
overflow方法
overflow只對盒子中的溢位部分做出反饋
我們常用的屬性有:
- overflow:visible 顯示
- overflow:hidden 隱藏
- overflow:scroll 滑動條
- overflow:auto 在超出時加上滑動條
我們下面給出示例代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 我們分別展示四種情況 -->
<style>
div {
height: 200px;
width: 100px;
font-size: 14px;
background-color: pink;
}
.w1 {
/* 使元素隱藏 */
overflow: hidden;
}
.w2 {
/* 使元素滑動 */
overflow: scroll;
}
.w3 {
/* 使元素自動化滑動 */
overflow: auto;
}
.w4 {
/* 使元素顯示 */
overflow: visible;
}
</style>
</head>
<body>
<div >《原神》是由上海米哈游網路科技股份有限公司制作發行的一款開放世界冒險游戲,于2017年1月底立項 [28] ,原初測驗于2019年6月21日開啟 [1] ,再臨測驗于2020年3月19日開啟 [2] ,啟程測驗于2020年6月11日開啟 [3] ,PC版技術性開放測驗于9月15日開啟,公測于2020年9月28日開啟 [4] ,在資料方面,同在官方服務器的情況下,iOS、PC、Android平臺之間的賬號資料互通,玩家可以在同一賬號下切換設備,</div>
<div >《原神》是由上海米哈游網路科技股份有限公司制作發行的一款開放世界冒險游戲,于2017年1月底立項 [28] ,原初測驗于2019年6月21日開啟 [1] ,再臨測驗于2020年3月19日開啟 [2] ,啟程測驗于2020年6月11日開啟 [3] ,PC版技術性開放測驗于9月15日開啟,公測于2020年9月28日開啟 [4] ,在資料方面,同在官方服務器的情況下,iOS、PC、Android平臺之間的賬號資料互通,玩家可以在同一賬號下切換設備,</div>
<div >《原神》是由上海米哈游網路科技股份有限公司制作發行的一款開放世界冒險游戲,于2017年1月底立項 [28] ,原初測驗于2019年6月21日開啟 [1] ,再臨測驗于2020年3月19日開啟 [2] ,啟程測驗于2020年6月11日開啟 [3] ,PC版技術性開放測驗于9月15日開啟,公測于2020年9月28日開啟 [4] ,在資料方面,同在官方服務器的情況下,iOS、PC、Android平臺之間的賬號資料互通,玩家可以在同一賬號下切換設備,</div>
<div >《原神》是由上海米哈游網路科技股份有限公司制作發行的一款開放世界冒險游戲,于2017年1月底立項 [28] ,原初測驗于2019年6月21日開啟 [1] ,再臨測驗于2020年3月19日開啟 [2] ,啟程測驗于2020年6月11日開啟 [3] ,PC版技術性開放測驗于9月15日開啟,公測于2020年9月28日開啟 [4] ,在資料方面,同在官方服務器的情況下,iOS、PC、Android平臺之間的賬號資料互通,玩家可以在同一賬號下切換設備,</div>
</body>
</html>
細節修飾
接下來我們介紹一些CSS中可以幫助美化界面的一些方法
我們會依次介紹到:
- CSS三角設計
- 滑鼠樣式
- 表單輪廓線
- 文本域禁止拖動指令
- vertical-align表單文本對齊
- 圖片底部空白問題
- 溢位文字采用省略號代替
CSS三角設計
我們在網頁設計中常常看到三角形標志,而這些標志需要一些小技巧才能夠完成
設計三角的要求:
- div盒子的高度和寬度均設計為0
- 我們通過div盒子的邊框來形成三角,邊框設定為:任意px solid transport
- 然后我們通過單獨的邊框設計,來創建不同方向的三角:border-top-color:red;
我們下面給出代碼示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 我們來設計一個三角形 -->
<style>
div {
/* 首先不需要高和寬 */
height: 0;
width: 0;
/* 整體邊框設計為透明,粗細看需求設計 */
border: 10px solid transparent;
/* 然后我們根據需求設計三角朝向和顏色 */
border-top-color: red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
滑鼠樣式
我們在網頁中常常會看到滑鼠的各種樣式
最常見的就是滑鼠,然后我們可以看到小手,包括移動,文字和禁止符號
在CSS中有專門的語法來控制滑鼠樣式
div {
cursor:deafult; 默認
cursor:pointer;小手
cursor:move; 移動
cursor:text; 文本
cursor:not-allowed;禁止
}
我們直接采用行內CSS來講解以上滑鼠樣式:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
ul li{
list-style: none;
}
</style>
</head>
<body>
<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>
</body>
</html>
表單輪廓線
我們在使用input的框架時,通常會有默認的藍色框架,但這樣并不美觀
所以我們常常去除掉這個藍色框架:
input {
outline : none;
}
文本域禁止拖動指定
我們在使用textare時,在右下角文本域是可以進行拖拽的
但我們在網頁設計時不能隨意讓用戶更改界面,所以我們同樣提供了方法禁止用戶拖拽文本域:
textare {
resize ; none;
/* 當然,如果想要去除掉文本域的藍色邊框,我們也可采用outline方法*/
outline : none;
}
vertical-align表單文本對齊
官方解釋:
- 針對于行內/行內塊元素做所有元素的垂直對齊方法
語法:
- 標準格式:vertical-align:positon;
- 頂部對齊: vertical-align:top;
- 垂直對齊: vertical-align:middle;
- 底部對齊: vertical-align:bottom;(默認)
以上vertical-align常用于使表單內的圖片與文本對齊
圖片底部空白問題
問題來源:
- 當我們插入圖片時,圖片并非緊貼框架,當你設定border時會發現圖片與div中有一定距離
- 原因主要是因為行內塊元素和文字的基線對齊
解決方法:
- 給圖片添加vertical-align屬性(推薦)
- 使圖片轉化為塊級元素display:block;
溢位文字采用省略號代替
當我們的框架承受不住過多文字時,可能出溢位或者突然終止,這樣的網頁設計都是不合標準的
所以我們希望采用省略號來使整個文本不顯得過于生硬
我們分別講述單行文本溢位和多行文本溢位的解決方法:
-
單行文本溢位:
-
強制文本一行顯示:
white-space:nowrap;
-
超出部分省略:
overflow:hidden;
-
省略部分用省略號顯示:
text-overflow:ellipsis;
-
-
多行文本溢位:(方法過于復雜且兼容性不好,不推薦使用)
-
設定省略超出部分且讓省略部分讓省略號代替:
overflow:hidden;
text-overflow:ellipsis;
-
彈性伸縮盒子模型顯示:
display: -webkit-box;
-
限制在一個塊元素顯示的文本的行數:
-webkit-line-clamp: 2;
-
設定或檢索伸縮盒物件的子元素排列方法:
-webkit-box-orient: vertical;
-
我們下面給出代碼示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 首先我們先講解單行文本溢位 -->
<style>
.lone {
/* 我們先設計一下盒子大小和bcc */
height: 20px;
width: 100px;
font-size: 10px;
line-height: 20px;
background-color: pink;
/* 第一步,單行文本當然要先設定文本強制在一行內顯示 */
white-space: nowrap;
/* 第二步:將超出內容省略 */
overflow: hidden;
/* 第三步:我們要用省略號來代替省略內容 */
text-overflow: ellipsis;
}
</style>
<!-- 然后我們來介紹一下多行文本溢位 -->
<style>
.more {
/* 我們先設計一下盒子大小和bcc */
/* 注意,這里需要手動設定高度,使多余行數內容不顯示出來 */
height: 40px;
width: 100px;
font-size: 10px;
line-height: 20px;
background-color: pink;
margin-top: 20px;
/* 1.設定省略超出部分且讓省略部分讓省略號代替: */
overflow: hidden;
text-overflow: ellipsis;
/* 2.彈性伸縮盒子模型顯示: */
display: -webkit-box;
/* 3.限制在一個塊元素顯示的文本的行數: */
-webkit-line-clamp: 2;
/* 4.設定或檢索伸縮盒物件的子元素排列方法: */
-webkit-box-orient: vertical;
}
</style>
</head>
<body>
<div >游戲發生在一個被稱作“提瓦特”的幻想世界,在這里,被神選中的人將被授予“神之眼”,導引元素之力,</div>
<div >游戲發生在一個被稱作“提瓦特”的幻想世界,在這里,被神選中的人將被授予“神之眼”,導引元素之力,</div>
</body>
</html>
常見布局技巧
我們可以采用一些技巧幫助我們更好地布局:
margin負值運用
- 采用負值解決邊框組合問題
我們在橫向排版采用float時,在存在邊框時,左右兩個邊框會導致中間邊框變粗
這時我們就可以采用margin方法使整體向左移動,使邊框進行覆寫,從而減小邊框粗細程度
我們給出案例解釋:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 我們希望去除中間邊框粗大的部分 -->
<style>
ul>li {
float: left;
list-style: none;
height: 200px;
width: 100px;
background-color: pink;
border: 1px solid red;
/* 我們使外邊距為-1,相當于向左移動 */
margin-left: -1px;
}
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
- 變色壓制性
在上方我們使用margin去除掉邊框變粗問題后
如果我們希望在hover該盒子后使邊框發生顏色變化,但后方邊框會壓住前方邊框導致效果失效
所以我們給出兩種方法來解決:
- 使用相對定位position:relative;
- 使用層級選擇器z-index:1;
我們下面給出代碼示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 我們希望去除中間邊框粗大的部分 -->
<style>
ul>li {
float: left;
list-style: none;
height: 200px;
width: 100px;
background-color: pink;
border: 1px solid red;
/* 我們使外邊距為-1,相當于向左移動 */
margin-left: -1px;
}
ul>li:hover {
border-color: yellow;
/* 使用positon或者z-index來解決 */
position: relative;
z-index: 1;
}
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
文字圍繞浮動元素
當我們文字和圖片同時使用時,為了防止圖片壓住文字導致文字顯示不全,我們常常采用文字圍繞圖片的形式
而實作這一目的的主要解決方法是采用float的浮動原理
我們通過一個案例來解釋:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 100px;
width: 200px;
background-color: pink;
margin: 100px auto;
}
.img {
/* 設定浮動,使文字和圖片在同一行且不覆寫 */
float: left;
height: 90px;
width: 50px;
/* 我們可以稍微設計邊框使圖片和字體相差一些距離使其更加美觀 */
margin-right: 5px;
}
.img img {
/* 設定圖片和圖片盒子一樣大 */
width: 100%;
}
</style>
</head>
<body>
<!-- 首先我們創建一個大盒子來同時裝圖片和文字 -->
<div >
<!-- 創建一個裝圖片的盒子來控制大小 -->
<div ><img src="https://www.cnblogs.com/Resources/picture/1.jpeg" alt=""></div>
<div >紗霧老師,你好鴨</div>
</div>
</body>
</html>
行內塊巧妙運用
我們常常需要用到頁面控制框架,我們將給出一個案例用來講解行內塊應用于頁面控制框架
案例圖片:

案例代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 對整體去除邊距 */
* {
padding: 0;
margin: 0;
}
/* 對大盒子進行設計 */
.box {
/* 使全部元素水平居中 */
text-align: center;
}
/* 對盒子的a做出設計 */
.box a{
/* 當a作為行內塊元素,就可以設計高寬,并受水平居中影響 */
display: inline-block;
width: 36px;
height: 36px;
line-height: 36px;
background-color: #f7f7f7;
border: 1px solid #ccc;
text-align: center;
text-decoration: none;
color: #333;
}
/* 對最前面和最后面的單獨設計寬度使其放下內容 */
.box .prev,
.box .next{
width: 85px;
}
/* 對兩個需要單設的元素設計 */
.box .current,
.box .cls{
border: 1px solid transparent;
background-color: transparent;
}
/* 設定跳轉框的大小 */
.box input{
width: 45px;
height: 36px;
outline: none;
border: 1px solid #ccc;
}
.box button{
width: 60px;
height: 36px;
background-color: #f7f7f7;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div >
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#" ><<上一頁</a>
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#" >2</a>
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#">3</a>
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#">4</a>
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#">5</a>
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#">6</a>
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#" >...</a>
<a href="https://www.cnblogs.com/qiuluoyuweiliang/p/#" >下一頁>></a>
<!-- 我們還需要一個跳轉頁面設計 -->
跳轉到
<input type="text">
頁
<input type="button" value="https://www.cnblogs.com/qiuluoyuweiliang/p/確定">
</div>
</body>
</html>
整體CSS初始化
我們在進行網頁設計時,CSS本身會有很多不美觀的設定
我們需要在開始前就對CSS進行初始化以便于我們后期的網頁設計
我們將給出CSS框架中所有需要初始化的部分并給出相關解釋,下面給出代碼:
/* 所有標簽需要清除內外邊距 */
* {
margin: 0;
padding: 0;
}
/* em斜體操作 */
em {
font-style: normal;
}
/* li需要去除前方小圓點 */
li {
list-style: none;
}
/* 圖片需要設定無邊框(照顧低版本瀏覽器),并設定垂直對齊用來解決圖片底部有縫隙問題 */
img {
border: 0;
vertical-align: middle;
}
/* 我們希望經過button時,滑鼠變為小手 */
button {
cursor: pointer;
}
/* 對于鏈接我們去除底部線,設定顏色 */
a {
color: #666;
text-decoration: none;
}
/* 對于鏈接我們經過時換色 */
a:hover {
color:#333;
}
/* 對于button和input,我們希望進行設定好字體需求 */
button,input {
font-family: 微軟雅黑;
}
/* 對于body整體我們可以先定好字體的相關設定 */
body {
background-color: #fff;
font: 12px/1.5 微軟雅黑;
color: #333;
}
/* 最后我們需要設定clearfix,在設計時可以直接使用 */
.clearfix {
*zoom: 1;
}
.clearfix::after{
visibility: hidden;
clear: both;
display: block;
content: "";
height: 0;
}
結束語
好的,那么關于CSS的補充內容就到這里,希望上面的講解能給你帶來幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/498862.html
標籤:Html/Css
下一篇:sass語法嵌套規則與注釋講解
