纯 CSS 实现浮动介绍
侧边栏壁纸
  • 累计撰写 611 篇文章
  • 累计收到 0 条评论

纯 CSS 实现浮动介绍

加速器之家
2024-08-24 / 0 评论 / 7 阅读 / 正在检测是否收录...

把扩展上传到 Chrome 商店需要在开发者后台填写一系列表单,非常喜欢它对详细介绍的处理,就想着偷师一下。

先上效果,下面是模仿的样子。由于详细介绍一般比设置本身要长,它使用了隐藏、按需显示的方式减少了高度。

看了开发者后台的代码,它是使用 JavaScript 响应鼠标事件并计算高度和显示。作为 CSS 洁癖,我第一反应当然是先考虑用 CSS 实现。

这里主要的问题其实就是如何让鼠标在设置(body)上响应介绍(aside)的显示。

在实现 iPhone 滑块开关的时候,就是通过 :check 来控制 的变化,方法是利用 + 选择符选择兄弟姐妹元素。

像这种控制其它元素的情况都可以用这个方法。

.item-aside {
  z-index: -1;
  opacity: 0;
}

.item-body:hover + .item-aside {
  z-index: 1;
  opacity: 1;
}

全部的代码,也火速使(tou)用(shi)在了 Saladit 的设置界面:

<ul class="menu">
  
  <li class="item">
    <div class="item-header">Lorem.div>
    <div class="item-body">Lorem ipsum dolor sit amet.div>
    <div class="item-aside">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat, vitae.div>
  li>
  <li class="item">
    <div class="item-header">Nesciunt.div>
    <div class="item-body">Sit doloremque repellat natus libero.div>
    <div class="item-aside">Pariatur quibusdam voluptas, vero accusamus itaque. Neque magni autem sunt.div>
  li>
  <li class="item">
    <div class="item-header">Animi!div>
    <div class="item-body">Similique voluptas, sint quam eligendi.div>
    <div class="item-aside">Unde repudiandae, mollitia voluptatum similique repellendus eum. Ut, quae! Deleniti.div>
  li>
   
ul>
*{
  box-sizing: border-box;
}

.menu{
  margin: 15px 10%;
}

.item{
  display: flex;
  position: relative;
  margin-bottom: 15px;
  line-height: 1.6;
  word-wrap: break-word;
}

.item-header{
  width: 2 / 12 * 100%;
  padding: 0 10px;
  text-align: right;
  font-weight: bold;
}

.item-body{
  flex: 1;
  width: 10 / 12 * 100%;
  margin-right: 4 / 12 * 100%;
  padding: 10px;
  background-color: #fafafa;
  
  &:hover + .item-aside{
    z-index: 1;
    opacity: 1;
  }
}

.item-aside{
  width: 4 / 12 * 100%;
  position: absolute;
  z-index: -1;
  top: 0;
  right: 0;
  padding-left: 10px * 2 + 1px;
  padding-right: 10px;
  opacity: 0;
  transition: all 400ms;
  
  // left line
  &::after{
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 10px;
    border-left: 1px #ddd solid;
  }
  
  &:hover{
    z-index: 1;
    opacity: 1;
  }
}
0

评论

博主关闭了当前页面的评论