今日的CSS小案例

简介: 今日的CSS小案例

今天需要做的是原神的手风琴,看其他挺好玩,我就做了一个



点击之后实现悬浮效果,看起来挺好看的,然后让咱们一起来设置


架构


这个布局相对于简单一点,有一个大盒子shell


里面放了一个版心card


然后把图片放盒子里面


下面的文字放另外一张盒子里面


 <div class="shell">
            <div class="card">
                <div class="box">
                    <img src="./img/1.png" />
                </div>
                <div class="character">
                    <img src="./img/1.png" />
                </div>
                <h4>凝光</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/3.png" />
                </div>
                <div class="character">
                    <img src="./img/3.png" />
                </div>
                <h4>多莉</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/4.png" />
                </div>
                <div class="character">
                    <img src="./img/4.png" />
                </div>
                <h4>刻晴</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/5.png" />
                </div>
                <div class="character">
                    <img src="./img/5.png" />
                </div>
                <h4>七七</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/6.png" />
                </div>
                <div class="character">
                    <img src="./img/6.png" />
                </div>
                <h4>纳西妲</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/8.png" />
                </div>
                <div class="character">
                    <img src="./img/8.png" />
                </div>
                <h4>雷电将军</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/7.png" />
                </div>
                <div class="character">
                    <img src="./img/7.png" />
                </div>
                <h4>可莉</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/10.png" />
                </div>
                <div class="character">
                    <img src="./img/10.png" />
                </div>
                <h4>芭芭拉</h4>
            </div>
        </div>


简单介绍一下架构之后,接下展示css代码,里面大量运用到了子集选择器,伪类选择器


介绍一下子集选择器><是指选择这个内容里面单独的内容


还是老规矩清除默认边距然后在加上css3盒子模型


给body设置弹性布局,然后缩放盒子大小,加上背景颜色,基本的样式就完成


然后其他的我相信大家都应该清除差不多了,不懂的再去查查资料这里就重点讲几个标签


今天的练习中遇到的两个新标签


object-fit 属性用于指定应如何调整 <img> 或 <video> 的大小以适合其容器。


这个属性告诉内容以不同的方式填充容器。比如“保留长宽比”或者“展开并占用尽可能多的空间


cube-bezier() 函数定义三次贝塞尔曲线(Cubic Bezier curve)。


三次贝塞尔曲线由 P0、P1、P2 和 P3 四个点进行定义。P0 和 P3 是曲线的起点和终点,在 CSS 中,这两个点是固定的,因为坐标是成比例。P0 为 (0, 0),代表初始时间和初始状态,P3 为 (1, 1),代表最终时间和最终状态。


伪类的话不用我多说了吧,详细情况还是查看W3C


这里是css代码


* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            min-height: 100vh;
            overflow: hidden;
            display: flex;
            justify-content: center;
            align-items: center;
            background-image: linear-gradient(120deg,#e0c3fc 0%,#8ec5fc 100%);
             background-size: cover;
        }
        .shell{
            width: 1700px;
            margin: 0 auto;
            margin-top: 5rem;
            height: 750px;
            display: flex;
        }
        .card{
            flex-basis: 13%;
            position: relative;
            overflow: hidden;
        }
        .card:not(:nth(1)){
            margin-left: 20px;
        }
        .card:hover{
            overflow: initial;
        }
        .box{
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            transition:  all .1s cubic-bezier(0.165,0.84,0.44,1);
            overflow: hidden;
            border-radius: 10px;
            background-image: linear-gradient(100deg,#a18cd1,#fcaa55c,#141414ce);
        }
        .box>img{
            object-fit: contain;
            width: 100%;
            height: 100%;
            transform: translate(-50%,10% ) scale(3);
            position: relative;
            z-index: -1;
        }
        .card:hover>.box img{
            opacity: 0;
        }
        .card:hover>.box{
            transform: scaleY(1.5);
            background-image: initial;
            background-color: #7d419f;
            z-index: 2;
            cursor: pointer;
        }
        .card>h4{
            position: absolute;
            display: block;
            width: 120px;
            text-align: center;
            color: rgba(255,255,255,0.2);
            bottom: 0;
            left: 50%;
            transform: translate(-50%, -35%);
            font-size: 28px;
            z-index: 100;
            transition: .2s;
        }
        .card:hover h4{
            color: #fff;
            transform: translate(-50%,250%);
        }
        .card:hover .character>img{
            opacity: 1;
        }
        .card>.character{
            position: absolute;
            top: -100px;
            left: -400px;
            width: 100%;
            height: 100%;
            z-index: 3;
            pointer-events: none;
        }
        .character>img{
            width: 820px;
            height: 820px;
            object-fit: contain;
            opacity: 0;
            transition: all .3s;
            position: relative;
            z-index: -10;
        }


这里提供源码,大家可以尝试一边理解一边来写哦,嘻嘻


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <style type="text/css">
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    body {
        min-height: 100vh;
        overflow: hidden;
        display: flex;
        justify-content: center;
        align-items: center;
      background-image: linear-gradient(120deg,#e0c3fc 0%,#8ec5fc 100%);
       background-size: cover;
    }
    .shell{
      width: 1700px;
      margin: 0 auto;
      margin-top: 5rem;
      height: 750px;
      display: flex;
    }
    .card{
      flex-basis: 13%;
      position: relative;
      overflow: hidden;
    }
    .card:not(:nth(1)){
      margin-left: 20px;
    }
    .card:hover{
      overflow: initial;
    }
    .box{
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      transition:  all .1s cubic-bezier(0.165,0.84,0.44,1);
      overflow: hidden;
      border-radius: 10px;
      background-image: linear-gradient(100deg,#a18cd1,#fcaa55c,#141414ce);
    }
    .box>img{
      object-fit: contain;
      width: 100%;
      height: 100%;
      transform: translate(-50%,10% ) scale(3);
      position: relative;
      z-index: -1;
    }
    .card:hover>.box img{
      opacity: 0;
    }
    .card:hover>.box{
      transform: scaleY(1.5);
      background-image: initial;
      background-color: #7d419f;
      z-index: 2;
      cursor: pointer;
    }
    .card>h4{
      position: absolute;
      display: block;
      width: 120px;
      text-align: center;
      color: rgba(255,255,255,0.2);
      bottom: 0;
      left: 50%;
      transform: translate(-50%, -35%);
      font-size: 28px;
      z-index: 100;
      transition: .2s;
    }
    .card:hover h4{
      color: #fff;
      transform: translate(-50%,250%);
    }
    .card:hover .character>img{
      opacity: 1;
    }
    .card>.character{
      position: absolute;
      top: -100px;
      left: -400px;
      width: 100%;
      height: 100%;
      z-index: 3;
      pointer-events: none;
    }
    .character>img{
      width: 820px;
      height: 820px;
      object-fit: contain;
      opacity: 0;
      transition: all .3s;
      position: relative;
      z-index: -10;
    }
    </style>
  </head>
  <body>
      <div class="shell">
          <div class="card">
              <div class="box">
                  <img src="./img/1.png" />
              </div>
              <div class="character">
                  <img src="./img/1.png" />
              </div>
              <h4>凝光</h4>
          </div>
          <div class="card">
              <div class="box">
                  <img src="./img/3.png" />
              </div>
              <div class="character">
                  <img src="./img/3.png" />
              </div>
              <h4>多莉</h4>
          </div>
          <div class="card">
              <div class="box">
                  <img src="./img/4.png" />
              </div>
              <div class="character">
                  <img src="./img/4.png" />
              </div>
              <h4>刻晴</h4>
          </div>
          <div class="card">
              <div class="box">
                  <img src="./img/5.png" />
              </div>
              <div class="character">
                  <img src="./img/5.png" />
              </div>
              <h4>七七</h4>
          </div>
          <div class="card">
              <div class="box">
                  <img src="./img/6.png" />
              </div>
              <div class="character">
                  <img src="./img/6.png" />
              </div>
              <h4>纳西妲</h4>
          </div>
          <div class="card">
              <div class="box">
                  <img src="./img/8.png" />
              </div>
              <div class="character">
                  <img src="./img/8.png" />
              </div>
              <h4>雷电将军</h4>
          </div>
          <div class="card">
              <div class="box">
                  <img src="./img/7.png" />
              </div>
              <div class="character">
                  <img src="./img/7.png" />
              </div>
              <h4>可莉</h4>
          </div>
          <div class="card">
              <div class="box">
                  <img src="./img/10.png" />
              </div>
              <div class="character">
                  <img src="./img/10.png" />
              </div>
              <h4>芭芭拉</h4>
          </div>
      </div>
  </body>
  </body>
</html>
相关文章
|
7天前
|
前端开发
CSS实现充电效果案例
CSS实现充电效果案例
19 1
|
3月前
|
编解码 前端开发 容器
CSS Flex布局实战案例:构建响应式卡片组件
【7月更文挑战第17天】通过上述步骤,我们成功地使用CSS Flex布局构建了一个响应式的卡片组件。Flexbox不仅简化了布局代码,还让我们能够轻松实现复杂的布局效果,如响应式设计。在实战中,掌握Flexbox将大大提高前端开发的效率和网页布局的质量。希望这个案例能够帮助你更好地理解和应用Flexbox布局。
|
5月前
|
前端开发 JavaScript 容器
CSS属性:定位属性+案例讲解:博雅互动 前端开发入门笔记(五)
CSS属性:定位属性+案例讲解:博雅互动 前端开发入门笔记(五)
48 1
|
5月前
|
前端开发
CSS3的几个变形案例……
CSS3的几个变形案例……
|
5月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
|
5月前
|
前端开发
CSS总结笔记+案例(下)
CSS总结笔记+案例
55 1
|
5月前
|
前端开发 Python
CSS总结笔记+案例(上)
CSS总结笔记+案例
47 1
CSS3【display: flex;】自适应布局案例
CSS3【display: flex;】自适应布局案例
93 0
|
5月前
|
前端开发
css3 纯代码案例
css3 纯代码案例
56 0
|
5月前
|
存储 前端开发 算法
【正在完善】高级CSS特效解析其示范案例
【正在完善】高级CSS特效解析其示范案例
153 0