Css Secret 案例全套 "github地址" "案例地址" 去年買了一本CSS揭秘的css專題書,該書揭示了 47 個鮮為人知的 CSS 技巧,主要內容包括背景與邊框、形狀、 視覺效果、字體排印、用戶體驗、結構與佈局、過渡與動畫等。去年買入時,就決定將裡面所有Demo案例全部擼一遍,作為自己 ...
Css Secret 案例全套
github地址
案例地址
去年買了一本CSS揭秘的css專題書,該書揭示了 47 個鮮為人知的 CSS 技巧,主要內容包括背景與邊框、形狀、 視覺效果、字體排印、用戶體驗、結構與佈局、過渡與動畫等。去年買入時,就決定將裡面所有Demo案例全部擼一遍,作為自己2018年學習清單中的首項。這個過程中也可以學習到一些比較實用的css技巧,對於工作中css佈局上面也有挺大的幫助。
下麵是幾種比較有趣的css場景的實現方式:
餅圖(基於transform實現方式)
<div class="picture1">20</div
/*基於transform的解決方案*/
.picture1 {
position: relative;
width: 100px;
line-height: 100px;
text-align: center;
color: transparent;
background: yellowgreen;
background-image: linear-gradient(to right, transparent 50%, #655 0);
border-radius: 50%;
/*animation-delay: -20s;*/
}
@keyframes spin {
to { transform: rotate(.5turn); }
}
@keyframes bg {
50% { background: #655; }
}
.picture1::before {
content: '';
position: absolute;
top: 0;
left: 50%;
width: 50%;
height: 100%;
border-radius: 0 100% 100% 0 / 50%;
background-color: inherit;
transform-origin: left;
animation: spin 50s linear infinite,
bg 100s step-end infinite;
animation-play-state: paused;
animation-delay: inherit;
}
// 基於transform的解決方案
let picture1 = document.querySelector('.picture1');
let rate1 = parseFloat(picture1.textContent);
picture1.style.animationDelay = `-${rate1}s`;
餅圖(基於svg實現方式)
<svg viewBox="0 0 32 32">
<circle id="circle2" r="16" cx="16" cy="16"></circle>
</svg>
/*基於svg的解決方案*/
svg {
width: 100px;
height: 100px;
transform: rotate(-90deg);
background: yellowgreen;
border-radius: 50%;
}
circle{
fill: yellowgreen;
stroke: #655;
stroke-width: 32;
}
#circle2 {
stroke-dasharray: 38 100;
}
插入換行
<dl>
<dt>Name:</dt>
<dd>wushaobin</dd>
<dt>Email:</dt>
<dd>[email protected]</dd>
<dd>[email protected]</dd>
<dd>[email protected]</dd>
<dt>Location:</dt>
<dd>shenzhen</dd>
</dl>
dt,dd {
display: inline;
}
dd{
margin: 0;
font-weight: bold;
}
dd+dt::before {
content: '\A';
white-space: pre;
}
dd+dd::before {
content: ', ';
font-weight: normal;
}