CSS3增強用戶界面的新屬性中,提供了一個名為appearance的屬性。該屬性的大部分取值主流瀏覽器是不兼容的,但是僅有的兩個取值一定有很強的用途。本篇文章小海前端(頭條號)就為大家來介紹該屬性的用法,并通過一個簡單的實例結合上一篇文章中講到的幾個CSS3屬性來學習它們的綜合用法。
承接文章:CSS3增強用戶界面屬性,有關溢出、縮放、輪廓與文本選中的解決方案
技術等級:中級 | 適合有一定的CSS基礎的人士閱讀。
CSS3所提供的增強用戶界面的屬性以及與此相關的屬性比較多,小海前端(頭條號)將分幾次對其進行講解。所包含的所有增強用戶界面的屬性包括:
box-shadow
box-sizing
overflow-x
overflow-y
resize
outline
outline-width
outline-style
outline-color
outline-offset
pointer-events
user-select
appearance
content
counter-increment
counter-reset
quotes
本篇文章為大家講解appearance屬性的用法。
一、CSS3偽裝元素:
CSS3技術使用appearance屬性來實現對元素的偽裝。
CSS3技術使用appearance屬性來實現對元素的偽裝
該屬性有以下兩個取值可以被瀏覽器兼容:
none,去除系統默認的元素外觀。
button,將元素偽裝為按鈕。
首先要聲明,這個屬性現在只有webkit內核的瀏覽器和火狐瀏覽器支持。因此使用的時候需要為該屬性添加瀏覽器兼容性前綴:
-webkit-appearance
-moz-appearance
例1:將一個超級鏈接偽裝為按鈕。
HTML文檔中有如下的一個超級鏈接:
<a href="#">小海前端(頭條號)</a>
利用下列CSS代碼將其偽裝為按鈕:
a{
text-decoration: none; //去除超級鏈接下方的下劃線
appearance:button; //偽裝為按鈕
-webkit-appearance:button; //兼容webkit內核的瀏覽器
-moz-appearance:button; //兼容Firefox瀏覽器
width:150px; height:30px; //設置寬度和高度
text-align: center; //文本水平居中對齊
line-height: 30px; //文本垂直居中對齊
}
上述代碼執行后,得到的最終效果如下圖所示。
例1的最終效果
例2:將一個復選框表單元素去除系統默認的外觀。
HTML文檔中有如下的一個復選框表單元素:
<input type=”checkbox” value=”1”> 你好
利用下列CSS代碼將其默認外觀取消掉:
input[type=checkbox]{
appearance:none; //去除系統默認外觀
-webkit-appearance:none; //兼容webkit內核的瀏覽器
-moz-appearance:none; //兼容Firefox瀏覽器
}
上述代碼執行后,復選框中原有的矩形選擇外觀被刪除,只留下后面的文本內容,即“你好”字樣。
有的小伙伴會說,這和display屬性設置為none不是一樣的效果嗎?注意:appearance屬性取值為none和display屬性取值為none是完全不一樣的。
display:none,將元素隱藏,元素本身和元素所占位置均不在頁面中體現,完全消失掉了。
appearance:none,將元素偽裝為沒有系統默認外觀的樣式,并不會將元素隱藏掉。
二、實例:美化表單元素中的下拉菜單
這個實例首先將表單元素中的下拉菜單的系統默認外觀去除掉,并通過其他CSS樣式對其進行美化。整個實例的最終效果如下圖所示。
實例的最終效果
1、在HTML中制作一個下拉菜單表單元素:
<div>
<select name="spec">
<option disabled selected>請選擇您的專業</option>
<option value="1">計算機網絡技術</option>
<option value="2">計算機應用</option>
<option value="3">計算機信息管理</option>
<option value="4">計算機軟件工程</option>
</select>
</div>
上述代碼中第一個<option></option>標記對中設置了兩個屬性:第一個disabled設置菜單項不可用,保證了這一項是無法選中的;第二個selected設置該菜單項默認是選中項,這樣就可以讓這個用戶無法選中的菜單項在默認情況下展示出來。
2、利用CSS去除掉系統默認外觀:
.box select{
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
}
將表單元素的下拉菜單取出系統默認外觀后的效果如下圖所示。
去除掉系統默認外觀的下拉菜單表單元素
3、設置容器.box的CSS樣式:
.box{
width:240px; height:30px;
position: relative;
}
這段代碼為下拉菜單的外部容器指定了寬度和高度,由于.box并沒有設置任何可見的效果(例如背景或邊框),所以這段代碼對整個效果的外觀是沒有影響的。但是這個容器會影響內部元素的一些效果,將這個容器設置為相對定位,接下來對<select>標記對設置為絕對定位,可以讓.box容器內的元素在容器內進行定位。
4、設置<select>標記的CSS樣式:
這主要是一些與外觀有關的CSS樣式設置,包括圓角效果、背景顏色、字體設置、字號大小、首行縮進、元素輪廓等樣式。
.box select{
width:240px; height:30px;
border-radius: 5px;
background-color: #efefef;
font-family: Microsoft YaHei;
font-size: 16px;
text-indent: 10px;
outline:none;
}
5、為<select>標記添加右側的下三角:
我們發現,當將下拉菜單系統默認的外觀去除后,表示可以單擊下拉的下三角也被刪除了。這就需要我們在<box></box>標記對內部再添加一個下三角。這里需要用到content屬性,該屬性必須結合偽元素選擇器::before或::after共同使用。
.box::after{
content:"▼";
position: absolute;
right:5px; top:5px;
pointer-events: none;
}
上述代碼表示在.box的末尾(::after)添加content屬性指定的文本內容,我們為該屬性設置了一個下三角符號,這個符號小伙伴們可以從Word軟件中輸入并復制過去。
最后一行 pointer-events:none的含義是將這個下三角變為不能接收鼠標事件的狀態,也就是說,單擊這個下三角就好像單擊它的父元素似的,這樣給人的感覺就是單擊下三角能夠拉下來所有的菜單項。
對于不了解pointer-events屬性的小伙伴,可以參考小海前端(頭條號)書寫的上一篇文章,即《CSS3增強用戶界面屬性,有關溢出、縮放、輪廓與文本選中的解決方案》一文,該文章的最后對pointer-events屬性有講解。
在頭條上發表的這些文章都是從前端開發的基礎開始一步一步講起的。我非常希望能有更多的前端開發初學者通過我寫的文章,逐步學到一定的知識,甚至慢慢有了入門的感覺。這些文章都是我這幾年教學過程中的經驗,每寫一篇時我都盡量把握好措辭,用簡單易懂的語言描述,同時精心設計版面,讓版面更加豐富,激發閱讀興趣。所以,每一篇文章可能篇幅不長,但是都要耗費小海老師很久的時間。
希望收藏了這篇文章的你同時也可以關注一下“小海前端”的頭條號,因為這些文章都是連載的,并且是經過系統的歸納和總結的。塌下心來認真閱讀,你一定會學到對你有用的知識。
關注“小海前端”,我會繼續為大家奉上更加深入的前端開發文章,也希望更多的初學者跟著學下去,我們共同將前端開發的路努力堅持的走下去。
在明天的文章中,將為大家講解增強用戶界面的content屬性的使用。該屬性的用法較多,正在學習CSS3技術的小伙伴們一定不要錯過。
一、以下是邊框最常見的用法,我們先做一個盒子box,給個簡單寬高樣式。
圖1
二、這種三個參數的寫法,應該是用得比較多的。
圖2
圖3
三、如果這四條邊,你只想要一條或兩條三條,可以通過top、left、right、bottom來實現。
圖4
圖5
四、再來一條右邊的線。
圖6
圖7
五、補一個小知識點,圓角。
圖8
圖9
六、border-radius也有四個參數的寫法。
圖10
圖11
七、當圓角圓到一定的程度,盒子就成了一個圓形。
圖12
圖13
擇器
格式: body div div p{樣式代碼} 匹配body里面的div里面的div里面的所有p標簽(包括后代)
格式: body>div>div>p{樣式代碼} 匹配body里面的div里面的div里面的所有p子元素(不包含后代)
格式: a:link/visited/hover/active:{樣式代碼}
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--樣式-->
<style>
#l2{color: green}
.c1{color: yellow}
input[type="text"],body>p{background-color: red}
/*子元素選擇器*/
body>div>div>p{color: pink}
/*子孫后代選擇器*/
body div div p{background-color: yellow}
/*偽類選擇器*/
a:link{color: red;}/*未訪問*/
a:visited{color: pink}/*訪問過*/
a:hover{color: green}/*懸停*/
a:active{color: yellow}/*點擊*/
</style>
</head>
<body>
<ul>
<li>劉備</li><li id="l2">關羽</li><li class="c1">張飛</li>
</ul>
<p>香蕉</p><p class="c1">蘋果</p>
<input type="text">
<input type="password">
<div>
<p>p1</p>
<div><p>p2</p></div>
<div><div><p>p3</p></div></div>
</div>
<a href="http://www.celinfcom">注釋助手</a>
顏色賦值
三原色: 紅綠藍 ,red green blue rgb ,每個顏色的取值范圍0-255 顏色賦值的幾種方式:
<style>
h1{
/*color: #ff0000;*/
/* color: #f00;*/
/*color: rgb(255,0,0);*/
color: rgba(255,0,0,0.3);
}
#d2{
width: 200px;
height: 200px;
background-color: pink;
/*設置背景圖片*/
background-image: url("../b.jpg");
/*設置背景圖片尺寸*/
background-size: 100px 100px;
/*禁止重復*/
background-repeat: no-repeat;
/*控制位置:橫向 縱向*/
/*background-position: 50px 100px;*/
background-position: 50% 50%;
}
</style>
<body>
<div id="d2"></div>
<h1>顏色測試</h1>
</body>
背景圖片
<style>
#d1{
width: 611px;
height: 376px;
background-color: #e8e8e8;
background-image: url("http://celinf.org/itemCat/study_computer.png");
background-repeat: no-repeat;
background-position: 90% 90%;
background-size: 318px 319px;
}
</style>
<body>
<div id="d1"></div>
</body>
文本和字體相關樣式
<style>
div{
width: 200px;
height: 50px;
border: 1px solid red;
/*水平對齊方式*/
text-align: center;
/*行高*/
line-height: 50px;
/*文本修飾 overline上劃線underline下劃線 line-through刪除線
none去掉文本修飾*/
text-decoration: line-through;
/*文本陰影:顏色 x偏移值 y偏移值 濃度*/
text-shadow: red -15px -15px 5px;
/*字體大小*/
font-size: 20px;
/*字體加粗 bold加粗 normal去掉加粗*/
font-weight: bold;
}
a{
text-decoration: none;/*去掉自帶下劃線*/
}
h3{
font-weight: normal;/*去掉自帶加粗*/
/*設置斜體*/
font-style: italic;
/*設置字體*/
/*font-family: cursive;*/
font: 30px cursive;
}
</style>
<body>
<h3>這是個h3</h3>
<a href="">超鏈接</a>
<div>文本和字體測試</div>
</body>
元素的顯示方式display
<style>
div{
width: 100px;
height: 100px;
border: 1px solid red;
}
span{
border: 1px solid blue;
/*行內元素不能修改寬高*/
width: 100px;
height: 100px;
/*把行內元素改成了塊級元素或行內塊元素都可以修改寬高 */
display: inline-block;
}
img{
width: 100px;
height: 100px;
display: none;/*隱藏元素*/
}
a{
width: 132px;
height: 40px;
background-color: #0aa1ed;
/*行內元素不能修改寬高*/
display: block;
text-align: center;
line-height: 40px;
color: white;
text-decoration: none;
font-size: 20px;
/*圓角 值越大越圓*/
border-radius: 3px;
}
</style>
<body>
<a href="">查看詳情</a>
<img src="../b.jpg" alt="">
<img src="../b.jpg" alt="">
<img src="../b.jpg" alt="">
<div>div1</div>
<div>div2</div>
<div>div3</div>
<span>span1</span>
<span>span2</span>
<span>span3</span>
</body>
盒子模型
盒子模型用來控制元素的顯示效果包括: 元素內容content+外邊距margin+邊框border+內邊距padding
border邊框效果
盒子模型之內容content
盒子模型之外邊距margin
盒子模型之邊框border
賦值方式:
<style>
#d1{
width: 100px;
height: 100px;
border:1px solid red;
/*margin-left: 100px;
margin-top: 100px;*/
/*margin-bottom: 50px;*/
margin: 10px 20px 30px 40px;
}
#d2{
width: 100px;height: 100px;border:1px solid red;
/*上下相鄰彼此添加外邊距 取最大值*/
margin-top: 100px;
}
#s1{
/*行內元素上下外邊距無效*/
margin-right: 100px;
}
#s2{
/*左右相鄰彼此添加外邊距 兩者相加*/
margin-left: 50px;
}
#big{
width: 200px;height: 200px;background-color: green;
overflow: hidden;/*解決粘連問題*/
}
#big>div{
width: 50px;height: 50px;background-color: red;
margin-left: 50px;
/*當元素的上邊緣和上級元素的上邊緣重疊時,給元素添加上外邊距會出現粘連問題*/
margin-top: 50px;
}
#border_div{
width: 400px;
height: 200px;
border: 10px solid blue;
/*設置圓角*/
border-radius: 200px;
}
</style>
<body>
<div id="border_div"></div>
<div id="big">
<div></div>
</div>
<span id="s1">span1</span><span id="s2">span2</span>
<div id="d1">外邊距測試</div>
<div id="d2">div2</div>
</body>
盒子模型之內邊距padding
<style>
div{
width: 150px;
height: 150px;
border:1px solid red;
/*內邊距會影響元素的寬高*/
padding-top: 50px;
padding-left: 50px;
}
</style>
<body>
<div>內邊距</div>
</body>
CSS的三大特性
<style>
#d1{
color: red;
}
div{
/*!important作用是提升優先級*/
color: blue !important;
}
</style>
<body>
<div id="d1">
<p>這是個p標簽</p>
<span>這是div里面的span</span>
<a href="">超鏈接</a>
</div>
<span>這是div外面的span</span>
</body>
綜合性練習【Demo】
<style>
body{
font: 12px "simhei", Arial, Helvetica, sans-serif;
color: #666;width: 1000px;
}
#d1{
width: 611px;height: 376px;
background-color: #e8e8e8;
background-image: url("http://celinf.org/study_computer1.png");
background-size: 318px 319px;
background-repeat: no-repeat;
background-position: 90% 90%;
overflow: hidden; display: inline-block;
}
#d2{margin: 68px 0 0 36px; width: 245px;height: 232px; }
#d3{
width: 375px;height: 376px;
background-color: #e8e8e8; overflow: hidden;
background-image: url("http://celinf.org/study_computer.png");
background-repeat: no-repeat;
background-size: 292px 232px;
background-position: 85% 85%; display: inline-block;
}
div>div{width: 253px; height: 232px;margin: 39px 0 0 25px; }
.title_p{
color: #333333;font-size: 32px;
margin-bottom: 12px;
font-weight: lighter;
}
.intro_p{font-size: 12px;font-weight: lighter;margin-bottom: 24px;}
.price_p{
font-size: 24px;color: #0aa1ed;
font-weight: bold;margin-bottom: 12px;
}
a{
display: block; background-color: #0aa1ed;
color: white;
width: 132px;height: 40px;
text-align: center; line-height: 40px;
font-size: 20px; text-decoration: none;
border-radius: 2px;
}
</style>
<body>
<div id="d1">
<div id="d2">
<p class="title_p">靈越 燃7000系列</p>
<p class="intro_p">
酷睿雙核i5處理器|256GB SSD| 8GB內存<br>
英特爾HD顯卡620含共享顯卡內存
</p>
<p class="price_p">¥4999.00</p>
<a href="#">查看詳情</a>
</div>
</div>
</div>
<div id="d3">
<div>
<p class="title_p">顏值 框不住</p>
<p class="intro_p">
酷睿雙核i5處理器|256GB SSD| 8GB內存
<br>
英特爾HD顯卡620含共享顯卡內存
</p>
<p class="price_p">¥6888.00</p>
<a href="#">查看詳情</a>
</div>
</div>
</body>
學習記錄,如有侵權請聯系刪除
*請認真填寫需求信息,我們會在24小時內與您取得聯系。