最近閑暇時間在看鑫爺?shù)?a target="_blank" rel="nofollow">《CSS世界》,內(nèi)容真的是非常精彩尝艘,很多細(xì)節(jié)分析的非常透徹,值得推薦姿染。在日常開發(fā)中實現(xiàn)某種效果有很多方式背亥,但是下面的css code
我以前都很少用到,原來css還可以這么玩 ??悬赏。
實現(xiàn)hover改變成另一張圖片效果
/**css**/
img: hover {
content: url( laugh-tear. png);
}
/**html code**/
< img src=" laugh. png">
局限性:content 屬性 改變 的 僅僅是 視覺 呈現(xiàn)狡汉, 當(dāng) 我們 以 右鍵 或 其他 形式 保存 這張 圖片 的 時候, 所 保存 的 還是 原來 src 對應(yīng) 的 圖片舷嗡。
顯示網(wǎng)站logo
< h1>logo</ h1>
h1 {
content: url( logo. svg);
}
優(yōu)點:
1轴猎,不會影響網(wǎng)站SEO。
2进萄,使用.svg矢量圖為了適應(yīng)移動 端 retina 屏幕(如果用.svg會模
糊)捻脖。
注:千萬不要自以為是地把重要的文本信息使用content 屬性生成,因為這對可訪問性和SEO都很不友好中鼠,content 屬性只能用來生成 一些 無關(guān)緊要的內(nèi)容可婶, 如裝飾性圖形或者序號之類; 同樣援雇,也不要擔(dān)心 原本重要的文字信息會被content替換矛渴,替換的僅僅是視覺層。
設(shè)置內(nèi)容無法選中、無法復(fù)制
user-select: none
“三道 杠” 小 圖標(biāo) 示意
image.png
.icon-menu {
display: inline-block;
width: 140px;
height: 10px;
padding: 35px 0;
border-top: 10px solid;
border-bottom: 10px solid;
background-color: currentColor;
background-clip: content-box;
}
雙層 圓點 圖形 示意
image.png
.icon-dot {
display: inline-block;
width: 100px;
height: 100px;
padding: 10px;
border: 10px solid;
border-radius: 50%;
background-color: currentColor;
background-clip: content-box;
}
去掉最右邊的margin-right:20
image.png
/**方案一:使用css3 nth-of-type屬性(不考慮兼容IE8**/
li: nth-of-type(3n) {
margin-right: 0;
}
/**方案二:通過給父容器添加margin屬性具温, 增加容器的可用寬度來實現(xiàn)**/
ul {
margin-right: -20px;
}
ul > li {
float: left;
width: 100px;
margin-right: 20px;
}
margin:auto的妙用
水平垂直居中
image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo</title>
<style>
.father {
position: relative;
width: 300px;
height: 150px;
border: red solid 1px;
}
.son {
position: absolute; /**key code here**/
background-color: orange;
width: 100px;
height: 100px;
top: 0;
right: 0;
left: 0;
bottom: 0;
margin: auto; /**key code here**/
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>
左/右對齊效果蚕涤。
image.png
...
.father {
width: 300px;
height: 200px;
border: red solid 1px;
}
.son {
width: 100px;
height: 100px;
background-color: orange;
margin-right: 50px; /**左對齊margin-right、margin-left值交換**/
margin-left: auto; /**key code here**/
}
...
水平居中
image.png
...
.father {
width: 300px;
height: 200px;
border: red solid 1px;
}
.son {
width: 100px;
height: 100px;
background-color: orange;
margin-right: auto; /**key code here**/
margin-left: auto; /**key code here**/
}
...
垂直居中
image.png
...
.father {
width: 300px;
height: 200px;
writing-mode: vertical-lr; /**key code here**/
border: red solid 1px;
}
.son {
width: 100px;
height: 100px;
background-color: orange;
margin: auto; /**key code here**/
}
...
實現(xiàn)最高渲染性能的去除下邊框css
div {
border: 1px solid;
border-bottom: 0 none; /**key code here**/
}
優(yōu)雅的增加icon按鈕點擊區(qū)域
點擊 區(qū)域 大小 從 16 × 16 一下子 提升 到 38 × 38铣猩,
image.png
.icon- clear {
width: 16px;
height: 16px;
border: 11px solid transparent; /**key code here**/
}
最高性能等邊三角圖形繪制
image.png
div {
width: 0;
border: 10px solid;
border-color: #f30 transparent transparent;
}
最高性能等腰三角圖形繪制
image.png
div {
width: 0;
border-width: 50px 34px;
border-style: solid;
border-color: #f30 transparent transparent;
}
又或者是這種三角形(對話框氣泡下的三角形)
image.png
div {
width: 0;
border-width: 20px 10px;
border-style: solid;
border-color: #f30 #f30 transparent transparent;
}
最高性能梯形圖形繪制
image.png
div {
width: 10px;
height: 10px;
border: 10px solid;
border-color: #f30 transparent transparent;
}
逼真 的 3D 效果
image.png
div {
width: 10px;
height: 10px;
border: 10px solid;
border-color: #f30 #00f #396 #0f0;
}
被遺忘的ex
單位
實現(xiàn)箭頭居中文字垂直方向(不受字體揖铜、字號影響)
image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo</title>
<style>
.icon-arrow {
display: inline-block;
width: 20px;
height: 1ex;
background: url(arrow.svg) no-repeat center/20px 20px;
}
</style>
</head>
<body>
<div style="font-size: 18px">
箭頭居中對齊
<i class="icon-arrow"></i>
</div>
</body>
</html>
永遠(yuǎn)居中的dialog
(可兼容到IE7)
image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo</title>
<style>
.container {
position: fixed;
top:0;
right: 0;
left: 0;
bottom: 0;
background-color: rgba(0,0,0,.5);
text-align: center;
font-size: 0;
white-space: nowrap;
overflow: auto;
}
.container:after {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
}
.content {
width: 240px;
height: 120px;
padding: 20px;
}
.dialog {
display: inline-block;
vertical-align: middle;
border-radius: 6px;
background-color: #fff;
font-size: 14px;
white-space: normal;
}
</style>
</head>
<body>
<div class="container">
<div class="dialog">
<div class="content">這dialog永遠(yuǎn)居中</div>
</div>
</div>
</body>
</html>
去除頁面默認(rèn)滾動條(PC端有效)
/**good code**/
html {
overflow: hidden;
}
/**bad code**/
html, body {
overflow: hidden;
}