纯 CSS 实现浮动介绍

quote

“The people who drive us nuts often change us most.”

Auliq Ice

它是使用 JavaScript 响应鼠标事件并计算高度和显示。作为 CSS 洁癖,我第一反应当然是先考虑用 CSS 实现。

它是使用 JavaScript 响应鼠标事件并计算高度和显示。作为 CSS 洁癖,我第一反应当然是先考虑用 CSS 实现。

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

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

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

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

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

全部的代码:

<ul class="menu">
  <!--  (li.item>((.item-header>lipsum1)+(.item-body>lipsum5)+(.item-aside>lipsum10)))*10  -->
  <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;
  }
}

评论没有加载,检查你的局域网

Cannot load comments. Check you network.

eat();

sleep();

code();

repeat();