zoukankan      html  css  js  c++  java
  • 实用的 CSS 小片段

    看了 30 Seconds CSS,有了许多收获,所以写下了这篇文章,算是收藏一些代码小片段,留作后用。

    一、手写 Loading 动画

    (1)弹性加载动画

    CSS 代码如下:

      .bounce-loading {
         20rem;
        height: 10rem;
        background-color:aqua;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .bounce-loading > div {
         1rem;
        height: 1rem;
        border-radius: 0.5rem;
        background-color:blueviolet;
        margin: 0 0.5rem;
        animation: bounce 1s infinite alternate;
      }
      @keyframes bounce {
        0% {
          transform: translateY(0);
          opacity: 1;
        }
        100% {
          transform: translateY(2rem);
          opacity: 0.1;
        }
      }
      .bounce-loading > div:nth-child(2) {
        animation-delay: 0.2s;
      }
      .bounce-loading > div:nth-child(3) {
        animation-delay: 0.4s;
      }
    

    HTML 代码如下:

      <div class="bounce-loading">
        <div></div>
        <div></div>
        <div></div>
      </div>
    

    效果如下:

    img

    (2)旋转小圆圈

    CSS 代码如下:

      .donut-loading {
         2rem;
        height: 2rem;
        border-radius: 2rem;
        border: 3px solid rgba(0, 0, 0, 0.1);
        border-left-color: #7983ff;
        animation: rotate 1s infinite linear;
      }
      @keyframes rotate {
        from {
          transform: rotate(0deg)
        }
        to {
          transform: rotate(360deg)
        }
      }
    

    HTML 代码如下:

      <div class="donut-loading"></div>
    

    效果如下:

    img

    二、构建一个宽高比固定的 div

    CSS 代码如下:

      .reactive-height {
         50%;
        background-color: aqua;
      }
      .reactive-height::before {
        content: '';
        float: left;
        padding-top: 100%;
      }
      .reactive-height::after {
        content: "";
        clear: both;
        display: table;
      }
    

    HTML 代码如下:

      <div class="reactive-height"></div>
    

    三、自定义滚动条

    CSS 代码如下:

      .custom-scrollbar {
         40rem;
        height: 7rem;
        background-color: aliceblue;
        overflow-y: scroll;
      }
      .custom-scrollbar::-webkit-scrollbar {
         8px;
      }
      .custom-scrollbar::-webkit-scrollbar-thumb {
        border-radius: 10px;
        background-color:mediumpurple;
      }
    

    HTML 代码如下:

      <div class="custom-scrollbar">
        <p>
          Pellentesque habitant morbi tristique senectus et 
          netus et malesuada fames ac turpis egestas. 
          Vestibulum tortor quam, feugiat vitae, 
          ultricies eget, tempor sit amet, ante. 
          Donec eu libero sit amet quam egestas semper. 
          Aenean ultricies mi vitae est. Mauris placerat 
          eleifend leo. Quisque sit amet est et sapien 
          ullamcorper pharetra. Vestibulum erat wisi, 
          condimentum sed, commodo vitae, ornare sit amet, 
          wisi. Aenean fermentum, elit eget tincidunt condimentum, 
          eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. 
          Donec non enim in turpis pulvinar facilisis. Ut felis. 
          Praesent dapibus, neque id cursus faucibus, tortor neque 
          egestas augue, eu vulputate magna eros eu erat. Aliquam 
          erat volutpat. Nam dui mi, tincidunt quis, accumsan 
          porttitor, facilisis luctus, metus
        </p>
      </div>
    

    效果截图如下:

    img

    四、自定义文本选择时的样式

    CSS 代码如下:

      .custom-text-selection {
         50%;
      }
      .custom-text-selection::selection {
        background-color:navy;
        color: white;
      }
    

    HTML 代码如下:

      <p class="custom-text-selection">
        Pellentesque habitant morbi tristique senectus et 
        netus et malesuada fames ac turpis egestas. 
        Vestibulum tortor quam, feugiat vitae, 
        ultricies eget, tempor sit amet, ante. 
        Donec eu libero sit amet quam egestas semper. 
        Aenean ultricies mi vitae est. Mauris placerat 
        eleifend leo. Quisque sit amet est et sapien 
        ullamcorper pharetra. Vestibulum erat wisi, 
        condimentum sed, commodo vitae, ornare sit amet, 
        wisi. Aenean fermentum, elit eget tincidunt condimentum, 
        eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. 
        Donec non enim in turpis pulvinar facilisis. Ut felis. 
        Praesent dapibus, neque id cursus faucibus, tortor neque 
        egestas augue, eu vulputate magna eros eu erat. Aliquam 
        erat volutpat. Nam dui mi, tincidunt quis, accumsan 
        porttitor, facilisis luctus, metus
      </p>
    

    效果截图如下:

    img

    五、禁止文本被选中

    CSS 代码如下:

      .disable-selection {
         50%;
        user-select: none;
      }
    

    HTML 代码如下:

      <p class="disable-selection">
        Pellentesque habitant morbi tristique senectus et 
        netus et malesuada fames ac turpis egestas. 
        Vestibulum tortor quam, feugiat vitae, 
        ultricies eget, tempor sit amet, ante. 
        Donec eu libero sit amet quam egestas semper. 
        Aenean ultricies mi vitae est. Mauris placerat 
        eleifend leo. Quisque sit amet est et sapien 
        ullamcorper pharetra. Vestibulum erat wisi, 
        condimentum sed, commodo vitae, ornare sit amet, 
        wisi. Aenean fermentum, elit eget tincidunt condimentum, 
        eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. 
        Donec non enim in turpis pulvinar facilisis. Ut felis. 
        Praesent dapibus, neque id cursus faucibus, tortor neque 
        egestas augue, eu vulputate magna eros eu erat. Aliquam 
        erat volutpat. Nam dui mi, tincidunt quis, accumsan 
        porttitor, facilisis luctus, metus
      </p>
    

    六、渐变色文本

    HTML 代码如下:

      <p class="gradient-text">
        gradient-text
      </p>
    

    CSS 代码如下:

      .gradient-text {
        background: -webkit-linear-gradient(pink, red);
        -webkit-text-fill-color: transparent;
        -webkit-background-clip: text;
      }
    

    效果截图如下:

    img

    七、Hover 下划线效果

    该部分实现一个鼠标移入时的下划线变化效果,共用一段 HTML 代码,代码如下:

      <p class="hover-underline-animation">
        Hover Underline Animation
      </p>
    

    各部分实现效果的 CSS 代码各异,将分别给出。

    (1)从中间开始变化

    CSS 代码如下:

      .hover-underline-animation {
        cursor: pointer;
      }
      .hover-underline-animation::after {
        content: '';
         100%;
        height: 2px;
        display: block;
        background-color: #7983ff;
        transform: scaleX(0);
        transition: transform 0.3s;
      }
      .hover-underline-animation:hover::after {
        transform: scaleX(1);
      }
    

    效果截图如下:

    img

    (2)从左至右变化

    CSS 代码如下:

      .hover-underline-animation {
        cursor: pointer;
      }
      .hover-underline-animation::after {
        content: '';
         100%;
        height: 2px;
        display: block;
        background-color: #7983ff;
        transform: scaleX(0);
        transform-origin: right;
        transition: transform 0.3s;
      }
      .hover-underline-animation:hover::after {
        transform: scaleX(1);
        transform-origin: left;
      }
    

    效果截图如下:

    img

    (3)实现左入左出、右入右出的效果

    这一部分 HTML 代码略有不同,为了展示左入左出、右入右出的效果,需要三个元素来实现,所以 HTML 代码多了两个相同的元素:

      <span class="hover-underline-animation">
        Hover Underline Animation
      </span>
      <span class="hover-underline-animation">
        Hover Underline Animation
      </span>
      <span class="hover-underline-animation">
        Hover Underline Animation
      </span>
    

    CSS 代码如下;

      .hover-underline-animation {
        cursor: pointer;
        position: relative;
      }
      .hover-underline-animation::after {
        content: '';
        position: absolute;
        right: 0;
        bottom: 0;
         0%;
        height: 2px;
        display: block;
        background-color: #7983ff;
        transition: all 0.3s;
      }
      .hover-underline-animation:hover::after {
         100%;
      }
      .hover-underline-animation:hover ~ .hover-underline-animation::after {
        right: 100% !important;
      }
    

    效果截图如下:

    img

    八、:not 选择器

    HTML 代码如下:

      <ul class="not-selector" type="none">
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
        <li>Four</li>
      </ul>
    

    CSS 代码如下:

      .not-selector > li {
         20rem;
        position: relative;
      }
      .not-selector > li:not(:last-child)::after {
        content: "";
        display: inline-block;
        background-color: #c3c3c3;
        height: 0.5px;
         100%;
        position: absolute;
        bottom: 0;
        left: 0;
      }
    

    实现效果如下:

    img

    九、滚动容器的渐变遮罩

    HTML 代码如下:

      <div class="overflow-scroll-gradient dn">
        <div>
          Pellentesque habitant morbi tristique senectus et 
          netus et malesuada fames ac turpis egestas. 
          Vestibulum tortor quam, feugiat vitae, 
          ultricies eget, tempor sit amet, ante. 
          Donec eu libero sit amet quam egestas semper. 
          Aenean ultricies mi vitae est. Mauris placerat 
          eleifend leo. Quisque sit amet est et sapien 
          ullamcorper pharetra. Vestibulum erat wisi, 
          condimentum sed, commodo vitae, ornare sit amet, 
          wisi. Aenean fermentum, elit eget tincidunt condimentum, 
          eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. 
          Donec non enim in turpis pulvinar facilisis. Ut felis. 
          Praesent dapibus, neque id cursus faucibus, tortor neque 
          egestas augue, eu vulputate magna eros eu erat. Aliquam 
          erat volutpat. Nam dui mi, tincidunt quis, accumsan 
          porttitor, facilisis luctus, metus
        </div>
      </div>
    

    CSS 代码如下:

      .overflow-scroll-gradient {
        position: relative;
      }
      .overflow-scroll-gradient::before {
        content: "";
        display: inline-block;
        position: absolute;
        top: 0;
        left: 0;
         100%;
        height: 5rem;
        background: linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.001))
      }
      .overflow-scroll-gradient::after {
        content: "";
        display: inline-block;
        position: absolute;
        bottom: 0;
        left: 0;
         100%;
        height: 5rem;
        background: linear-gradient(rgba(255, 255, 255, 0.001), rgba(255, 255, 255, 1))
      }
      .overflow-scroll-gradient > div {
         15rem;
        height: 25rem;
        overflow-y: scroll;
      }
    

    效果截图如下:

    img

    十、使用系统字体获得原生体验

    HTML 代码:

      <p class="system-font-stack">This text uses the system font.</p>
    

    CSS 代码如下:

      .system-font-stack {
        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif;
      }
    

    我在 Ubuntu 系统下显示效果如下:

    img

    十一、圆润的 checkbox

    HTML 代码如下:

      <div>
        <input type="checkbox" id="toggle" class="offscreen">
        <label for="toggle" class="checkbox"></label>
      </div>
    

    CSS 代码如下:

      .offscreen {
        display: none;
      }
      .checkbox {
         40px;
        height: 20px;
        border-radius: 20px;
        display: inline-block;
        background-color: rgba(0, 0, 0, 0.25);
        position: relative;
        cursor: pointer;
      }
      .checkbox::before {
        content: "";
         18px;
        height: 18px;
        border-radius: 18px;
        background-color: white;
        position: absolute;
        left: 1px;
        top: 1px;
        transition: transform .3s ease;
      }
      #toggle:checked + .checkbox {
        background-color: #7983ff;
      }
      #toggle:checked + .checkbox::before {
        transform: translateX(20px);
      }
    

    效果截图如下:

    img

    十二、绘制一个三角形

    HTML 代码如下:

      <div class="triangle"></div>
    

    CSS 代码如下:

      .triangle {
         0;
        height: 0;
        border: 1rem solid transparent;
        border-bottom: 3rem solid blue;
      }
    

    利用 CSS border 的特性绘制三角形,改变 border 的宽度,可以绘制不同特性的三角形。

    十三、过长的文本用省略号代替

    HTML 代码如下:

      <p class="truncate-text">
        This text will be truncated with ellipse ......
      </p>
    

    CSS 代码如下:

      .truncate-text {
         19rem;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        background-color: #c3c3c3
      }
    

    效果截图如下;

    img

  • 相关阅读:
    几种基本样式,背景图,字体,下划线,行高垂直等
    网页主菜单,横向
    DOM操作
    递归的小例题
    学习两个星期后做的第一个网页
    Js的语法和循环
    JS
    75 int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。[2行核心代码]
    74 使用BitSet输出数组中的重复元素
    73 [面试题]交换一个整数的二进制表示的奇偶位(swapOddEvenBits)
  • 原文地址:https://www.cnblogs.com/DM428/p/10086568.html
Copyright © 2011-2022 走看看