本文推薦 PC 端閱讀~
本文版權歸 「公衆號 | 前端一萬小時」 全部,未經受權,請勿轉載!
複製代碼
css_09
複製代碼
1. 讓一個元素「看不見」有幾種方式?有什麼區別?
2. 單行文本溢出加 ... 如何實現?
3. 如何在頁面上實現一個圓形的可點擊區域?
4. 解釋下面代碼的做用?字體裏 \5b8b\4f53 表明什麼?
body{
font: 12px/1.5 tahoma,arial,'Hiragino Sans GB','\5b8b\4f53',sans-serif;
}
5. 如何去除列表元素的默認樣式前面的點 · ?
✅ list-style: none;
❌ text-decoration: none;
❌ opacity: 0;
❌ default-type: none;
複製代碼
前言: 經過前 8 篇文章基礎知識的鋪墊,咱們也算是見識了 CSS 的「神通廣大」。css
這篇文章,咱們就把實際工做中最高頻用到的「CSS 加樣式」挨個列一列,用一行行代碼來展現 CSS 是如何給「盒子」、「背景」、「連接」、「列表」、「表單」、「表格」等加樣式的。html
本篇的全部知識點爲必掌握項,咱們學習的時候能夠先本身按要求寫出樣式,而後參照個人代碼,把一行行所有弄懂。前端
參考代碼:
🔗源碼及效果展現
HTMLgit
<p class="box1">
「UI設計」和「前端代碼實現」在實際工做中既像「冤家」又像「情人」。此號目的:把「冤家」、「情人」變成「內人」。前期我們聊基礎,後期我們聊提升。 一切從零開始,一點一點到一萬,一步一步作大佬!
</p>
<p class="box2">
「UI設計」和「前端代碼實現」在實際工做中既像「冤家」又像「情人」。此號目的:把「冤家」、「情人」變成「內人」。前期我們聊基礎,後期我們聊提升。 一切從零開始,一點一點到一萬,一步一步作大佬!
</p>
<p class="box3">
「UI設計」和「前端代碼實現」在實際工做中既像「冤家」又像「情人」。此號目的:把「冤家」、「情人」變成「內人」。前期我們聊基礎,後期我們聊提升。 一切從零開始,一點一點到一萬,一步一步作大佬!
</p>
<p class="box4">
「UI設計」和「前端代碼實現」在實際工做中既像「冤家」又像「情人」。此號目的:把「冤家」、「情人」變成「內人」。前期我們聊基礎,後期我們聊提升。 一切從零開始,一點一點到一萬,一步一步作大佬!
</p>
複製代碼
CSSgithub
body {
width: 600px;
margin: 0 auto;
}
p {
margin-top: 30px;
line-height: 1.5;
padding: 18px 16px;
}
.box1 {
border: 1px solid #ccc;
border-radius: 3px;
/*🚀咱們用 border-radius 給邊框加「圓角」*/
}
.box2 {
background-color: #ffe7e7;
border-left: 6px solid #f44336;
border-right: 7px solid #f44336;
}
.box3 {
background-color: #ffffd7;
border-top: 6px solid #ffeb3b;
border-bottom: 7px solid #ffeb3b;
}
.box4 {
background-color: #e7ffe7;
border: 1px solid #4CAF50;
border-bottom: 7px solid #4CAF50;
}
複製代碼
參考代碼:
🔗源碼及效果展現
HTML面試
<ul class="btn">
<li><a class="btn-s" href=""> steal</a></li>
<li><a class="btn-y" href=""> yellow</a></li>
<li><a class="btn-o" href=""> orange</a></li>
<li><a class="btn-r" href=""> red</a></li>
<li><a class="btn-g" href=""> green</a></li>
</ul>
複製代碼
CSSapi
body,h1,h2,h3,h4,h5,h6,ul,li,p {
margin: 0;
padding: 0;
}
/*🚀以上這種經常使用的設置是爲了把瀏覽器默認樣式——margin、padding 所產生的縫隙給去掉, 以便後邊咱們本身加樣式*/
ul {
list-style: none;
}
/*🚀這個是爲了把列表前邊的「小黑點」或「數字」去掉*/
a {
text-decoration: none;
}
/*🚀這個能夠把 a 連接下邊默認的」下劃線「去掉」 */
body {
text-align: center;
}
.btn>li {
display: inline-block;
/*🚀使列表變成「行內盒子」,讓它展現成「一行」*/
margin-top: 30px;
}
a {
display: inline-block;
/*🚀使「塊盒子」顯示爲「行內盒子」,讓它展現成「一行」*/
padding: 8px 10px;
color: #000;
border-radius: 3px;
}
a:hover {
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
/*🏆隱藏或者透明元素的方法: 1. opacity: 0; 透明度爲 0 ,總體都看不見了; 2. visibility: hidden; 這個和上邊相似; 3. display: none; 消失,不佔用位置; 4. background-color: rgba(0,0,0,0.2); 只是背景色透明。*/
.btn-s {
background-color: #009688;
color: #fff; /*🚀表示「白色」*/
}
.btn-y {
background-color: #ff9800;
}
.btn-o {
background-color: #ffeb3b;
}
.btn-r {
background-color: #f44336;
color: #fff;
}
.btn-g {
background-color: #4CAF50;
color: #fff;
}
複製代碼
<table class="display">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Points</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>Adam</td>
<td>Johnson</td>
<td>67</td>
</tr>
<tr>
<td>Bo</td>
<td>Nilsson</td>
<td>50</td>
</tr>
<tr>
<td>Mike</td>
<td>Ross</td>
<td>35</td>
</tr>
</tbody>
</table>
<table class="display display-1">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Points</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>Adam</td>
<td>Johnson</td>
<td>67</td>
</tr>
<tr>
<td>Bo</td>
<td>Nilsson</td>
<td>50</td>
</tr>
<tr>
<td>Mike</td>
<td>Ross</td>
<td>35</td>
</tr>
</tbody>
</table>
複製代碼
CSS瀏覽器
body {
font-family: arial;
width: 600px;
margin: 0 auto;
/*🚀把 margin 設置爲 0 auto ,是咱們讓「塊級元素」居中最經常使用的方法*/
}
table {
margin-top: 30px;
}
.display {
border-collapse: collapse;
/*🚀 border-collapse 屬性設置表格的邊框是否被合併爲一個單一的邊框。它有如下幾個值: -- separate 默認值:邊框會被分開,不會忽略 border-spacing 和 empty-cells 屬性; -- collapse :若是可能,邊框會合併爲一個單一的邊框。會忽略 border-spacing 和 empty-cells 屬性; -- inherit :規定應該從父元素繼承 border-collapse 屬性的值。 */
border-spacing: 0;
width: 100%;
border: 1px solid #ccc;
}
.display th {
color: #fff;
background-color: #4CAF50;
padding: 8px 8px;
font-weight: bold;
}
.display tr {
border-bottom: 1px solid #ddd;
text-align: left;
}
.display tr:nth-child(even) {
/*🚀這裏的」結構選擇器「請看下邊註釋詳解*/
background-color: #f1f1f1;
}
.display td {
padding: 8px 8px;
}
.display.display-1 {
border:none;
}
.display.display-1 th {
background-color: #fff;
color: #000;
}
複製代碼
⚠️註釋:結構選擇器
第一類:bash
1️⃣ 選擇其父元素的第一個子元素。
E:first-child
2️⃣ 選擇其父元素的最後一個子元素。
E:last-child
3️⃣ 選擇父元素下第 n 個元素或奇偶元素,n 的值爲:數字/odd/even。
E:nth-child(n)
複製代碼
第二類:網絡
1️⃣ 選擇父元素下使用同種標籤的第一個標籤元素。
E:first-of-type
2️⃣ 選擇父元素下使用同種標籤的最後一個標籤元素。
E:last-of-type
3️⃣ 選擇父元素下使用同種標籤的第 n 個標籤元素。n 的值爲:數字/odd/even。
E:enth-of-type(n)
複製代碼
❓(用例子講解):試着運行如下代碼,並對結果做出解釋。
🔗源碼及效果展現
html
<div class="container">
<div class="box">div.box</div>
<p class="box">p.box</p>
<div class="box">div.box</div>
<div class="box">
<div class="item">div.item</div>
<p class="item">p.item</p>
</div>
<p class="box"></p>
</div>
複製代碼
css
.box:first-child {
color: red;
}
.box:first-of-type {
background: blue;
}
.box :first-child {
font-size: 30px;
}
.box :first-of-type {
font-weight: bold;
}
複製代碼
💡答:
以上 html 結構爲
.box:first-child {
color: red;
}
複製代碼
匹配類名爲 box 的元素的父元素的第一個子元素,爲 ①,使其字體顏色爲 red 。① 生效;
.box:first-of-type {
background: blue;
}
複製代碼
匹配類名爲 box 的元素的父元素下使用「同種標籤」的「第一個」標籤元素。①③④ 使用的是 <div>
,②⑤ 使用的是 <p>
標籤。故選同種標籤的第一個,① ② 生效;
.box :first-child {
font-size: 30px;
}
複製代碼
選擇類名爲 box 的後代元素的第一個子元素,加樣式。 故 ⑥ 生效;
.box :first-of-type {
font-weight: bold;
}
複製代碼
選擇類名爲 box 的後代元素同標籤的第一個標籤元素加樣式。故⑥ ⑦ 生效。
參考代碼:
html
<div class="t0"></div>
<div class="t1"></div>
<div class="t2"></div>
<div class="t3"></div>
<div class="t4"></div>
<div class="t5"></div>
<div class="t6"></div>
複製代碼
css
/*🏆css 畫三角形原理: 邊框顏色 border-color 四個值默認的加載方向是(上、右、下、左) top right bottom left 。 */
.t0 {
width: 0;
height: 0;
border-style: solid;
border-width: 100px 100px 100px 100px;
border-color: blue yellow green red;
}
複製代碼
.t1 {
width: 0;
height: 0;
border-style: solid;
border-width: 100px 100px 0 100px; /*🚀經過將 bottom 的 width 值設置爲 0 來達到把多於的位置去掉!*/
border-color: blue transparent transparent transparent;
}
複製代碼
🏆分析
由此,咱們能夠畫出 t5 這個三角形的形狀:
.t5 {
width: 0;
height: 0;
border-style: solid;
border-width: 0 100px 100px 0; /*🚀由上邊的圖能夠很清晰的得出各個邊應該是多少 px !*/
border-color: transparent transparent red transparent;
}
複製代碼
參考代碼:
html
<div class="circle-1"></div>
<div class="circle-2"></div>
<div class="circle-3"></div>
複製代碼
css
.circle-1 {
width: 100px;
height: 100px;
border: 1px solid black;
border-radius: 15px; /*🚀border-radius 用於畫圓角!*/
}
.circle-2 {
margin-top: 30px;
width: 100px;
height: 100px;
border: 1px solid black;
border-radius: 10px 8px 6px 2px;
}
.circle-3 {
margin-top: 30px;
width: 100px;
height: 100px;
border: 1px solid black;
border-radius: 50px;
/*🚀大於等於寬高的一半 50px; 或者爲方便,直接 50%; */
}
複製代碼
加個「背景」就是加個圖片,這個圖片是背景圖片,背景圖片至關於:這個元素是一個窗口,而背景圖片就是這個窗口後的風景。
html
<div class="box"></div>
複製代碼
css
.box {
width: 200px;
height: 200px;
border: 1px solid;
background-image: url(https://qdywxs.github.io/css-images/css09-img01.jpg)
}
複製代碼
html
<span class="box"></span>
複製代碼
css
.box {
width: 200px;
height: 200px;
border: 1px solid;
background-image: url(https://qdywxs.github.io/css-images/css09-img01.jpg);
}
複製代碼
background-size 的設置是去拉伸背景圖片(給圖片加一個長度的範圍)以適應給定的「寬高」尺寸。
html
<div class="box"></div>
複製代碼
css
.box {
width: 200px;
height: 200px;
border: 1px solid;
background: url(https://qdywxs.github.io/css-images/css09-img01.jpg) 0 0 no-repeat;
background-size: 200px 200px;
}
複製代碼
.box {
width: 500px;
height: 200px;
border: 1px solid;
background: url(https://qdywxs.github.io/css-images/css09-img01.jpg) 0 0 no-repeat;
background-size: 50%;
}
複製代碼
.box {
width: 500px;
height: 200px;
border: 1px solid;
background: url(https://qdywxs.github.io/css-images/css09-img01.jpg) 0 0 no-repeat;
background-size: contain;
}
複製代碼
.box {
width: 600px;
height: 200px;
border: 1px solid;
background: url(https://qdywxs.github.io/css-images/css09-img01.jpg) 0 0 no-repeat;
background-size: cover;
}
複製代碼
css sprite 指將不一樣的圖片、圖標合併在一張圖上。使用 css sprite 能夠減小網絡請求,提升網頁加載性能——實質上,就是使用「背景圖片」的方式來展現這些放在一張圖上的小圖標。
但因爲圖片的「可維護性」不好,如今通常都會選擇用「字體圖標」——在文章 《CSS——CSS 給文本加樣式:① 字體屬性》中有詳細講解。
💡製做精靈圖的網站:CSS Sprites Generator
💡圖片壓縮網站:tinypng
TinyPNG 使用智能有損壓縮技術來減小 PNG 文件的文件大小,提升網站加載性能。
p {
overflow: 值;
}
複製代碼
值 | 屬性 |
---|---|
visible | 默認值。內容不會被修剪,會呈如今元素框以外。 |
hidden | 內容會被修剪,而且其他內容是不可見的。 |
scroll | 內容會被修剪,但瀏覽器會顯示滾動條以便查看其他的內容。 |
auto | 若是內容被修剪,則瀏覽器會顯示滾動條以便查看其他的內容。 |
inherit | 規定應該從父元素繼承 overflow 屬性的值。 |
🔗源碼及效果展現
html
<div class="card">
<img src="https://qdywxs.github.io/css-images/css09-img02.jpg">
<h3><a href="#">Hello, Oli的前端一萬小時。</a></h3>
<p>「UI設計」和「前端代碼實現」在實際工做中既像「冤家」又像「情人」。此號目的:把「冤家」、「情人」變成「內人」。前期我們聊基礎,後期我們聊提升。 一切從零開始,一點一點到一萬,一步一步作大佬!
</p>
</div>
複製代碼
css
.card{
width: 150px;
border: 1px solid #ccc;
font-size: 12px;
margin: 0 auto;
}
.card>img {
width: 150px;
}
.card>h3 {
padding: 0 10px;
white-space: nowrap; /*🚀1️⃣首先,強制文本不換行*/
overflow: hidden; /*🚀2️⃣其次,隱藏溢出*/
text-overflow: ellipsis; /*🚀3️⃣最後,對溢出的文本用 ellipsis 省略號代替*/
}
/*🚀上邊的三個屬性必須連用才生效——單行文本溢出加 … */
.card>h3>a {
text-decoration: none;
color: red;
}
.card>p {
padding: 0 10px;
color: #666;
}
複製代碼
💡參考代碼:
🔗源碼及效果展現
html
<body>
<h1 class="title">Oli's 前端一萬小時</h1>
<p class="description">理論不懂就實踐,實踐不會就學理論</p>
<ul class="tab-ct">
<li><a class="btn" href="#">項目1</a></li>
<li><a class="btn" href="#">項目2</a></li>
<li><a class="btn" href="#">項目3</a></li>
<li><a class="btn" href="#">項目4</a></li>
<li><a class="btn" href="#">項目5</a></li>
</ul>
<img class="work-img" src="https://qdywxs.github.io/css-images/css09-img03.jpg" alt="">
<ul class="operate-ct">
<li><a class="btn" href="#">查看源代碼</a></li>
<li><a class="btn" href="#">使用說明</a></li>
</ul>
<p class="footer">
做者: <a href="#">Oli</a>
</p>
</body>
複製代碼
css
body,h1,h2,h3,h4,h5,h6,ul,li,p {
margin: 0;
padding: 0;
}
a{
text-decoration: none;
}
ul {
list-style: none;
}
body{
font-family: 14px/1.4 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', '\5FAE\8F6F\96C5\9ED1', 'STHeiti', 'WenQuanYi Micro Hei', SimSun, sans-serif;
/*🚀這裏的 '\5FAE\8F6F\96C5\9ED1' 就是「微軟雅黑」這四個字的 unicode 碼*/
/*🚀咱們怎麼知道一個「字體」的 unicode 碼? 咱們能夠右鍵檢查元素,而後點擊 console ,而後輸入 escape(`黑體`) , 就能夠彈出相應的碼。而後把 %u 換成 \ 。 */
background: #fff;
text-align: center;
}
.work-img {
width: 250px;
}
.btn {
display: inline-block;
padding: 4px 6px;
color: #fff;
background-color: #72b890;
border-radius: 3px;
}
.btn:hover {
opacity: 0.7;
/*🚀隱藏或者透明元素的方法: 1️⃣ opacity: 0; 透明度爲 0 ,總體都看不見了; 2️⃣ visibility: hidden; 這個和上邊相似; 3️⃣ display: none; 消失,不佔用位置; 4️⃣ background-color: rgba(0,0,0,0.2); 只是背景色透明。 */
}
.btn:active {
opacity: 1;
}
.title {
color: #87968e;
font-size: 35px;
margin-top: 30px;
}
.description {
color: #aaa;
margin-top: 10px;
opacity: 0.6;
}
.tab-ct {
margin-top: 30px;
}
.tab-ct>li {
display: inline-block;
margin: 0px 4px;
}
.work-img {
margin-top: 40px;
}
.operate-ct {
margin-top: 40px;
}
.operate-ct>li {
display: inline-block;
margin: 0 4px;
}
.footer {
color: #aaa;
margin: 30px;
}
a{
color: #72b890;
}
複製代碼
後記: CSS 能作的事情還有不少,上邊介紹的都是實際工做中的高頻用法,屬於必掌握。至於其餘用法,咱們要抱有敬畏之心去細水長流地認真學習,沒必要一蹴而就。
祝好,qdywxs ♥ you!