1. 打字成果

阐明:

通过 steps() 属性来实现宰割文本的成果。首先,你必须指定 step() 中传入的数量,在这个例子中就是文本的长度。

接着,第二步,咱们应用 @keyframes 去申明什么时候开始执行动画

<div class="typing">    <div class="typing-effect">Typing effect for text</div></div>.typing {  height: 80vh;  display: flex;  align-items: center;  justify-content: center;}.typing-effect {  width: 22ch;  white-space: nowrap;  overflow: hidden;  border-right: 3px solid;  font-family: monospace;  font-size: 2em;  animation: typing 2s steps(22), effect .5s step-end infinite alternate;}@keyframes typing {  from {    width: 0;  }}@keyframes effect {  50% {    border-color: transparent;  }}
  1. 通明图片暗影成果

阐明:

应用:drop-shadow

drop-shadow 的工作形式是,其遵循给给定图片的 Alpha 通道。因而暗影是基于图片的外部形态,而不是显示在图片里面。

<div class="transparent-shadow">  <div class="margin-right">    <div class="margin-bottom align-center">      box-shadow    </div>        <img class="box-shadow" src="https://stackdiary.com/wp-content/uploads/2022/02/logo.png" alt="box-shadow example (transparent)">  </div>      <div>    <div class="margin-bottom align-center">      drop-shadow    </div>        <img class="drop-shadow" src="https://stackdiary.com/wp-content/uploads/2022/02/logo.png" alt="drop-shadow example (transparent)">  </div></div>.transparent-shadow {  height: 80vh;  display: flex;  align-items: center;  justify-content: center;}.margin-right {  margin-right: 2em;}.margin-bottom {  margin-bottom: 1em;}.align-center {  text-align: center;}.box-shadow {  box-shadow: 2px 4px 8px #3723a1;}.drop-shadow {  filter: drop-shadow(2px 4px 8px #3723a1);}
  1. 自定义 Cursor

<div class="custom-cursor">  <div class="card">    Default  </div>    <div class="card card-image-cursor">    Image  </div>    <div class="card card-emoji-cursor">    Emoji  </div></div>.custom-cursor {  display: flex;  height: 80vh;  align-items: center;  justify-content: center;  background: #f3f3f3;  padding: 0 10px;}.card {    width: 200px;    height: 200px;display: flex;    align-items: center;    justify-content: center;    background-color: #D29A5A;    margin-right: 10px;color: #fff;    font-size: 1.4em;    text-align: center;  }.card-image-cursor {  background-color: #D11A5A;  cursor: url("https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0ac1d8cb2b1b46a384e986a7461df26a~tplv-k3u1fbpfcp-watermark.image?"), auto;}.card-emoji-cursor {  background-color: #D29B22;  cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'  width='48' height='48' viewport='0 0 100 100' style='fill:black;font-size:24px;'><text y='50%'></text></svg>"), auto;}
  1. 应用 attr() 展现 tooltip

<h1>  HTML/CSS tooltip</h1><p>  Hover <span class="tooltip" tooltip-data="Tooltip Content">Here</span> to see the tooltip.</p><p>  You can also hover <span class="tooltip" tooltip-data="This is another Tooltip Content">here</span> to see another example.</p>.tooltip {  position: relative;  border-bottom: 1px dotted black;}.tooltip:before {  content: attr(tooltip-data);   position: absolute;  width: 250px;  background-color: #efba93;  color: #fff;  text-align: center;  padding: 15px;  line-height: 1.1;  border-radius: 5px;  z-index: 1;  opacity: 0;  transition: opacity .5s;  bottom: 125%;  left: 50%;  margin-left: -60px;  font-size: 0.70em;  visibility: hidden;}.tooltip:after {  content: "";  position: absolute;  bottom: 75%;  left: 50%;  margin-left: -5px;  border-width: 5px;  border-style: solid;  opacity: 0;  transition: opacity .5s;  border-color: #000 transparent transparent transparent;  visibility: hidden;}.tooltip:hover:before, .tooltip:hover:after {  opacity: 1;  visibility: visible;}
  1. 纯 CSS 实现核算清单
<div class="checklist">  <h2>Item Checklist with CSS</h2>  <label>    <input type="checkbox" name="" id="" />    <i></i>    <span>Item #1</span>  </label>  <label>    <input type="checkbox" name="" id="" />    <i></i>    <span>Item #2</span>  </label>  <label>    <input type="checkbox" name="" id="" />    <i></i>    <span>Item #3</span>  </label></div>.checklist {    padding: 50px;    position: relative;    background: #043b3e;    border-top: 50px solid #03a2f4;}.checklist h2 {    color: #f3f3f3;    font-size: 25px;    padding: 10px 0;    margin-left: 10px;    display: inline-block;    border-bottom: 4px solid #f3f3f3;}.checklist label {    position: relative;    display: block;    margin: 40px 0;    color: #fff;    font-size: 24px;    cursor: pointer;}.checklist input[type="checkbox"] {    -webkit-appearance: none;}.checklist i {    position: absolute;    top: 2px;    display: inline-block;    width: 25px;    height: 25px;    border: 2px solid #fff;}.checklist input[type="checkbox"]:checked ~ i {    top: 1px;    height: 15px;    width: 25px;    border-top: none;    border-right: none;    transform: rotate(-45deg);}.checklist span {    position: relative;    left: 40px;    transition: 0.5s;}.checklist span:before {    content: '';    position: absolute;    top: 50%;    left: 0;    width: 100%;    height: 1px;    background: #fff;    transform: translateY(-50%) scaleX(0);    transform-origin: left;    transition: transform 0.5s;}.checklist input[type="checkbox"]:checked ~ span:before {    transform: translateY(-50%) scaleX(1);    transform-origin: right;    transition: transform 0.5s;}.checklist input[type="checkbox"]:checked ~ span {    color: #154e6b;}
  1. 应用 :is() 和 :where() 增加元素款式

<h2 class="content-title">Header 2 <b>content title</span></h2>:where(h2,h3,h4) > b {  color: blue;}:is(h2):where(.content-title) {  text-transform: uppercase;}
  1. 应用关键帧实现手风琴下拉成果
<main>    <details open>        <summary>Accordion Tab #1</summary>        <div class="tab-content">          <p>your text goes here</p>        </div>    </details>    <details>        <summary>Accordion Tab #2</summary>        <div class="tab-content">          <p>your text goes here</p>        </div>  </details>  <details>    <summary>Accordion Tab #3</summary>    <div class="tab-content">      <p>your text goes here</p>    </div>  </details></main>main {  max-width: 400px;  margin: 0 auto;}p {    text-align: justify;    font-family: monospace;    font-size: 13px;}summary {  font-size: 1rem;  font-weight: 600;  background-color: #f3f3f3;  color: #000;  padding: 1rem;  margin-bottom: 1rem;  outline: none;  border-radius: 0.25rem;  cursor: pointer;  position: relative;}details[open] summary ~ * {  animation: sweep .5s ease-in-out;}@keyframes sweep {  0%    {opacity: 0; margin-top: -10px}  100%  {opacity: 1; margin-top: 0px}}details > summary::after {  position: absolute;  content: "+";  right: 20px;}details[open] > summary::after {  position: absolute;  content: "-";  right: 20px;}details > summary::-webkit-details-marker {  display: none;}
  1. 侧边栏的 Hover 成果

<div class="css-dynamic-sidebar">  <nav>    <a class="" href="#">Menu #1</a>    <a class="" href="#">Menu #2</a>    <a class="" href="#">Menu #3</a>  </nav> <div class="site-content">  <p>Hover over the sidebar</p>  <p>Also work with Tab selector (for accessibility)</p></div></div>.css-dynamic-sidebar {    overflow: hidden;    position: relative;    height: 15em;    max-width: 15em;    margin: auto;}.site-content {    margin: auto;}nav {    display: flex;    flex-direction: column;    position: absolute;    right: 100%;    padding: 1em;    background-color: #f3f3f3;    transform: translateX(1em);    transition: 0.2s transform;}nav:hover,nav:focus-within {    transform: translateX(100%);}a {    white-space: pre;    color: black;}p {    font-size: 2em;    font-family: monospace;    text-align: center;}
  1. 应用 first-letter 实现首字母大写

<div class="content-section">  <p>here we target the  wrapper and select the p element. then append first-of-type and target first-letter specifically. you can then reuse the same option in other parts of your design by changing the wrapper variable</p></div>.content-section p:first-of-type::first-letter {    color: #f3f3f3;    float:  left;    font-size: 4rem;    line-height: 4vw;    padding-right: 8px; /* border: 0.25em double; */}
  1. 应用 ::before 增加按钮的图标

<div class="card">  <div class="card-body">    <a href="" target="_blank" class="btn btn-docu" rel="noopener">Documentation</a>  </div></div>.card .card-body .btn {  display: block;  width: 200px;  height: 48px;  line-height: 48px;  background-color: blue;  border-radius: 4px;  text-align: center;  color: #fff;  font-weight: 700;}.card .card-body .btn-docu:before {    content:"\0000a0";    display:inline-flex;    height:24px;    width:24px;    line-height:24px;    margin:0px 10px 0px 0px;    position:relative;    top:0px;    left:0px;    background:url(https://stackdiary.com/docu.svg) no-repeat left center transparent;    background-size:100% 100%;}