内容简介:文章来源于代码相对简单,html,css,js代码都放置一起,具体效果还是亲自动手才能学真知!也可以参考译文!Box-sizing reset
文章来源于 30 Seconds of CSS ,一些很有用的css片段,30秒内你就能理解!
代码相对简单,html,css,js代码都放置一起,具体效果还是亲自动手才能学真知!也可以参考译文!
Layout(布局)
重置box-sizing: border-box
Box-sizing reset
<div class="box">border-box</div> <div class="box content-box">content-box</div>
html { box-sizing: border-box; } *, *::before, *::after { box-sizing: inherit; } .box { display: inline-block; width: 150px; height: 150px; padding: 10px; background: tomato; color: white; border: 10px solid red; } .content-box { box-sizing: content-box; }
清除浮动
Clearfix
<div class="clearfix"> <div class="floated">float a</div> <div class="floated">float b</div> <div class="floated">float c</div> </div>
.clearfix::after { content: ''; display: block; clear: both; } .floated { float: left; }
响应式布局等比例宽高元素
Constant width to height ratio
<div class="constant-width-to-height-ratio"></div> .constant-width-to-height-ratio { background: #333; width: 50%; } .constant-width-to-height-ratio::before { content: ''; padding-top: 100%; float: left; } .constant-width-to-height-ratio::after { content: ''; display: block; clear: both; }
用display: table居中
Display table centering
<div class="container"> <div class="center"><span>Centered content</span></div> </div> .container { border: 1px solid #333; height: 250px; width: 250px; } .center { display: table; height: 100%; width: 100%; } .center > span { display: table-cell; text-align: center; vertical-align: middle; }
在父元素均匀分布子元素
Evenly distributed children
<div class="evenly-distributed-children"> <p>Item1</p> <p>Item2</p> <p>Item3</p> </div> .evenly-distributed-children { display: flex; justify-content: space-between; }
用display: flex水平垂直居中
Flexbox centering
<div class="flexbox-centering"><div class="child">Centered content.</div></div> .flexbox-centering { display: flex; justify-content: center; align-items: center; height: 100px; }
用display: grid水平垂直居中
Grid centering
<div class="grid-centering"><div class="child">Centered content.</div></div> .grid-centering { display: grid; justify-content: center; align-items: center; height: 100px; }
在flex布局中让最后元素自动充满剩下区域
Last item with remaining available height
<div class="container"> <div>Div 1</div> <div>Div 2</div> <div>Div 3</div> </div> html, body { height: 100%; margin: 0; } .container { height: 100%; display: flex; flex-direction: column; } .container > div:last-child { background-color: tomato; flex: 1; }
在不知道元素宽高的情况下,利用Transform水平垂直居中元素
Transform centering
<div class="parent"><div class="child">Centered content</div></div> .parent { border: 1px solid #333; height: 250px; position: relative; width: 250px; } .child { left: 50%; position: absolute; top: 50%; transform: translate(-50%, -50%); text-align: center; }
超出的文本用...代替
Truncate text
<p class="truncate-text">If I exceed one line's width, I will be truncated.</p> .truncate-text { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; width: 200px; }
Visual(视觉)
用纯css画圆圈
Circle
<div class="circle"></div> .circle { border-radius: 50%; width: 2rem; height: 2rem; background: #333; }
自定义滚动条样式
Custom scrollbar
<div class="custom-scrollbar"> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit.<br /> Iure id exercitationem nulla qui repellat laborum vitae, <br /> molestias tempora velit natus. Quas, assumenda nisi. <br /> Quisquam enim qui iure, consequatur velit sit? </p> </div> .custom-scrollbar { height: 70px; overflow-y: scroll; } /* To style the document scrollbar, remove `.custom-scrollbar` */ .custom-scrollbar::-webkit-scrollbar { width: 8px; } .custom-scrollbar::-webkit-scrollbar-track { box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); border-radius: 10px; } .custom-scrollbar::-webkit-scrollbar-thumb { border-radius: 10px; box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); }
自定义文本选择样式
Custom text selection
<p class="custom-text-selection">Select some of this text.</p> ::selection { background: aquamarine; color: black; } .custom-text-selection::selection { background: deeppink; color: white; }
根据自身颜色动态地变化阴影颜色
Dynamic shadow
<div class="dynamic-shadow"></div> .dynamic-shadow { position: relative; width: 10rem; height: 10rem; background: linear-gradient(75deg, #6d78ff, #00ffb8); z-index: 1; } .dynamic-shadow::after { content: ''; width: 100%; height: 100%; position: absolute; background: inherit; top: 0.5rem; filter: blur(0.4rem); opacity: 0.7; z-index: -1; }
烛刻文字
Etched text
<p class="etched-text">I appear etched into the background.</p> .etched-text { text-shadow: 0 2px white; font-size: 1.5rem; font-weight: bold; color: #b8bec5; }
用object-fit和object-position 代替 background-size和background-position
Fit image in container
<img class="image image-contain" src="https://picsum.photos/600/200" /> <img class="image image-cover" src="https://picsum.photos/600/200" /> .image { background: #34495e; border: 1px solid #34495e; width: 200px; height: 200px; } .image-contain { object-fit: contain; object-position: center; } .image-cover { object-fit: cover; object-position: right top; }
渐变色文本
Gradient text
<p class="gradient-text">Gradient text</p> .gradient-text { background: -webkit-linear-gradient(pink, red); -webkit-text-fill-color: transparent; -webkit-background-clip: text; }
边际线边框
Hairline border
<div class="hairline-border">text</div> .hairline-border { box-shadow: 0 0 0 1px; } @media (min-resolution: 2dppx) { .hairline-border { box-shadow: 0 0 0 0.5px; } } @media (min-resolution: 3dppx) { .hairline-border { box-shadow: 0 0 0 0.33333333px; } } @media (min-resolution: 4dppx) { .hairline-border { box-shadow: 0 0 0 0.25px; } }
:not选择器
:not selector
<ul class="css-not-selector-shortcut"> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> </ul> .css-not-selector-shortcut { display: flex; } ul { padding-left: 0; } li { list-style-type: none; margin: 0; padding: 0 0.75rem; } li:not(:last-child) { border-right: 2px solid #d2d5e4; }
在屏幕上消失的元素
Offscreen
关键词:可绑定js事件对象,更合适对盲人需要提供额外的信息,相对于display:none它能提供盲人设备信息,相对于visibility: hidden,它不占用物理空间
<a class="button" href="http://pantswebsite.com"> Learn More <span class="offscreen"> about pants</span> </a> .offscreen { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
梯度隐藏元素以指示需要滚动获取更多内容
Overflow scroll gradient
<div class="overflow-scroll-gradient"> <div class="overflow-scroll-gradient__scroller"> Lorem ipsum dolor sit amet consectetur adipisicing elit. <br /> Iure id exercitationem nulla qui repellat laborum vitae, <br /> molestias tempora velit natus. Quas, assumenda nisi. <br /> Quisquam enim qui iure, consequatur velit sit? <br /> Lorem ipsum dolor sit amet consectetur adipisicing elit.<br /> Iure id exercitationem nulla qui repellat laborum vitae, <br /> molestias tempora velit natus. Quas, assumenda nisi. <br /> Quisquam enim qui iure, consequatur velit sit? </div> </div> .overflow-scroll-gradient { position: relative; } .overflow-scroll-gradient::after { content: ''; position: absolute; bottom: 0; width: 240px; height: 25px; background: linear-gradient( rgba(255, 255, 255, 0.001), white ); /* transparent keyword is broken in Safari */ pointer-events: none; } .overflow-scroll-gradient__scroller { overflow-y: scroll; background: white; width: 240px; height: 200px; padding: 15px; line-height: 1.2; }
漂亮文本下划线
Pretty text underline
<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p> .pretty-text-underline { display: inline; text-shadow: 1px 1px #f5f6f9, -1px 1px #f5f6f9, -1px -1px #f5f6f9, 1px -1px #f5f6f9; background-image: linear-gradient(90deg, currentColor 100%, transparent 100%); background-position: bottom; background-repeat: no-repeat; background-size: 100% 1px; } .pretty-text-underline::-moz-selection { background-color: rgba(0, 150, 255, 0.3); text-shadow: none; } .pretty-text-underline::selection { background-color: rgba(0, 150, 255, 0.3); text-shadow: none; }
重置所有样式
Reset all styles
<div class="reset-all-styles"> <h5>Title</h5> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure id exercitationem nulla qui repellat laborum vitae, molestias tempora velit natus. Quas, assumenda nisi. Quisquam enim qui iure, consequatur velit sit? </p> </div> .reset-all-styles { all: initial; }
用svg制作锋利的锯齿形状
Shape separator
<div class="shape-separator"></div> .shape-separator { position: relative; height: 48px; background: #333; } .shape-separator::after { content: ''; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'%3E%3Cpath d='m12 0l12 12h-24z' fill='%23fff'/%3E%3C/svg%3E"); position: absolute; width: 100%; height: 12px; bottom: 0; }
使用系统字体效果
System font stack
<p class="system-font-stack">This text uses the system font.</p> .system-font-stack { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; }
三角形
Triangle
<div class="triangle"></div> .triangle { width: 0; height: 0; border-top: 20px solid #333; border-left: 20px solid transparent; border-right: 20px solid transparent; }
构建交替的斑马线列表
Zebra striped list
<ul> <li>Item 01</li> <li>Item 02</li> <li>Item 03</li> <li>Item 04</li> <li>Item 05</li> </ul> li:nth-child(odd) { background-color: #eee; }
Animation(动画)
弹跳的加载动画
Bouncing loader
<div class="bouncing-loader"> <div></div> <div></div> <div></div> </div> @keyframes bouncing-loader { to { opacity: 0.1; transform: translate3d(0, -1rem, 0); } } .bouncing-loader { display: flex; justify-content: center; } .bouncing-loader > div { width: 1rem; height: 1rem; margin: 3rem 0.2rem; background: #8385aa; border-radius: 50%; animation: bouncing-loader 0.6s infinite alternate; } .bouncing-loader > div:nth-child(2) { animation-delay: 0.2s; } .bouncing-loader > div:nth-child(3) { animation-delay: 0.4s; }
用:hover做按钮交互效果
Button border animation
<div class="button-border"><button class="button">Submit</button></div> .button { background-color: #c47135; border: none; color: #ffffff; outline: none; padding: 12px 40px 10px; position: relative; } .button:before, .button:after { border: 0 solid transparent; transition: all 0.25s; content: ''; height: 24px; position: absolute; width: 24px; } .button:before { border-top: 2px solid #c47135; left: 0px; top: -5px; } .button:after { border-bottom: 2px solid #c47135; bottom: -5px; right: 0px; } .button:hover { background-color: #c47135; } .button:hover:before, .button:hover:after { height: 100%; width: 100%; }
圆圈加载loading
Donut spinner
<div class="donut"></div> @keyframes donut-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .donut { display: inline-block; border: 4px solid rgba(0, 0, 0, 0.1); border-left-color: #7983ff; border-radius: 50%; width: 30px; height: 30px; animation: donut-spin 1.2s linear infinite; }
更容易的变量
Easing variables
<div class="easing-variables">Hover</div> :root { /* Place variables in here to use globally */ } .easing-variables { --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53); --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19); --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22); --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035); --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335); --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94); --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1); --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1); --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1); --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1); --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955); --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1); --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1); --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); --ease-in-out-expo: cubic-bezier(1, 0, 0, 1); --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86); display: inline-block; width: 75px; height: 75px; padding: 10px; color: white; line-height: 50px; text-align: center; background: #333; transition: transform 1s var(--ease-out-quart); } .easing-variables:hover { transform: rotate(45deg); }
动画效果从0到未知高度
Height transition
<div class="trigger"> Hover me to see a height transition. <div class="el">content</div> </div> .el { transition: max-height 0.5s; overflow: hidden; max-height: 0; } .trigger:hover > .el { max-height: var(--max-height); } var el = document.querySelector('.el') var height = el.scrollHeight el.style.setProperty('--max-height', height + 'px')
交互阴影box动画
Hover Shadow Box Animation
<p class="hover-shadow-box-animation">Box it!</p> .hover-shadow-box-animation { display: inline-block; vertical-align: middle; transform: perspective(1px) translateZ(0); box-shadow: 0 0 1px transparent; margin: 10px; transition-duration: 0.3s; transition-property: box-shadow, transform; } .hover-shadow-box-animation:hover, .hover-shadow-box-animation:focus, .hover-shadow-box-animation:active { box-shadow: 1px 10px 10px -10px rgba(0, 0, 24, 0.5); transform: scale(1.2); }
下划线交互动画
Hover underline animation
<p class="hover-underline-animation">Hover this text to see the effect!</p> .hover-underline-animation { display: inline-block; position: relative; color: #0087ca; } .hover-underline-animation::after { content: ''; position: absolute; width: 100%; transform: scaleX(0); height: 2px; bottom: 0; left: 0; background-color: #0087ca; transform-origin: bottom right; transition: transform 0.25s ease-out; } .hover-underline-animation:hover::after { transform: scaleX(1); transform-origin: bottom left; }
Interactivity(交互)
不能选中
Disable selection
<p>You can select me.</p> <p class="unselectable">You can't select me!</p> .unselectable { user-select: none; }
:focus-within的应用
如果子元素聚焦,则改变父子的样式
Focus Within
<div class="focus-within"> <form> <label for="given_name">Given Name:</label> <input id="given_name" type="text" /> <br /> <label for="family_name">Family Name:</label> <input id="family_name" type="text" /> </form> </div> form { border: 3px solid #2d98da; color: #000000; padding: 4px; } form:focus-within { background: #f7b731; color: #000000; }
鼠标悬停效果跟踪
Mouse cursor gradient tracking
<button class="mouse-cursor-gradient-tracking"><span>Hover me</span></button> .mouse-cursor-gradient-tracking { position: relative; background: #7983ff; padding: 0.5rem 1rem; font-size: 1.2rem; border: none; color: white; cursor: pointer; outline: none; overflow: hidden; } .mouse-cursor-gradient-tracking span { position: relative; } .mouse-cursor-gradient-tracking::before { --size: 0; content: ''; position: absolute; left: var(--x); top: var(--y); width: var(--size); height: var(--size); background: radial-gradient(circle closest-side, pink, transparent); transform: translate(-50%, -50%); transition: width 0.2s ease, height 0.2s ease; } .mouse-cursor-gradient-tracking:hover::before { --size: 200px; } var btn = document.querySelector('.mouse-cursor-gradient-tracking') btn.onmousemove = function(e) { var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop btn.style.setProperty('--x', x + 'px') btn.style.setProperty('--y', y + 'px') }
悬浮弹出菜单
Popout menu
<div class="reference" tabindex="0"><div class="popout-menu">Popout menu</div></div> .reference { position: relative; background: tomato; width: 100px; height: 100px; } .popout-menu { position: absolute; visibility: hidden; left: 100%; background: #333; color: white; padding: 15px; } .reference:hover > .popout-menu, .reference:focus > .popout-menu, .reference:focus-within > .popout-menu { visibility: visible; }
用纯css控制子兄弟(退出)的效果
Sibling fade
<div class="sibling-fade"> <span>Item 1</span> <span>Item 2</span> <span>Item 3</span> <span>Item 4</span> <span>Item 5</span> <span>Item 6</span> </div> span { padding: 0 1rem; transition: opacity 0.2s; } .sibling-fade:hover span:not(:hover) { opacity: 0.5; }
开关按钮
Toggle switch
<input type="checkbox" id="toggle" class="offscreen" /> <label for="toggle" class="switch"></label> .switch { position: relative; display: inline-block; width: 40px; height: 20px; background-color: rgba(0, 0, 0, 0.25); border-radius: 20px; transition: all 0.3s; } .switch::after { content: ''; position: absolute; width: 18px; height: 18px; border-radius: 18px; background-color: white; top: 1px; left: 1px; transition: all 0.3s; } input[type='checkbox']:checked + .switch::after { transform: translateX(20px); } input[type='checkbox']:checked + .switch { background-color: #7983ff; } .offscreen { position: absolute; left: -9999px; }
Other(其他)
数学计算样式值
Calc()
<div class="box-example"></div> .box-example { height: 280px; background: #222 url('https://image.ibb.co/fUL9nS/wolf.png') no-repeat; background-position: calc(100% - 20px) calc(100% - 20px); }
计数器复位
Counter
<ul> <li>List item</li> <li>List item</li> <li> List item <ul> <li>List item</li> <li>List item</li> <li>List item</li> </ul> </li> </ul>
自定义变量
Custom variables
<p class="custom-variables">CSS is awesome!</p> :root { /* Place variables within here to use the variables globally. */ } .custom-variables { --some-color: #da7800; --some-keyword: italic; --some-size: 1.25em; --some-complex-value: 1px 1px 2px whitesmoke, 0 0 1em slategray, 0 0 0.2em slategray; color: var(--some-color); font-size: var(--some-size); font-style: var(--some-keyword); text-shadow: var(--some-complex-value); }
以上所述就是小编给大家介绍的《30 Seconds of CSS[译][践]》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Perl语言入门 第六版(中文版)
Randal L.Schwartz、brian d foy、Tom Phoenix / 盛春 / 东南大学出版社 / 2012-3 / 62.00元
《Perl语言入门(第6版)(中文版)》根据作者施瓦茨、福瓦、菲尼克斯从1991年开始的教学经验积累汇聚而成,多年来十分畅销。此次第六版涵盖了最新的Perl5.14版本的变化。《Perl语言入门(第6版)(中文版)》每章都包含若干习题,帮助你巩固消化刚学到的知识。也许其他书籍只是想着灌输Perl编程的条条框框,但《Perl语言入门(第6版)(中文版)》不同,我们希望把你培养成一名真正的Perl程序......一起来看看 《Perl语言入门 第六版(中文版)》 这本书的介绍吧!