【问题标题】:CSS transtition on both text and background文本和背景上的 CSS 过渡
【发布时间】:2016-11-23 20:13:42
【问题描述】:

我正在移动设备上使用 JavaScript、HTML 和 CSS 设计一个简单的滑入式菜单

<div class="menu">division
     <ul>unordered list
          <li>list item 1</li>
          <li>list item 2</li>
     </ul>
</div>

CSS:

.menu {
    position: absolute;
    width: 0px;
    background: #111;
    -webkit-transition: width 2s; 
    transition: width 0.5s;
}

.menu.act {
    position: absolute;
    background: #111;
    width: 67%;
}

(一段简单的 JavaScript 代码将菜单的类更改为“menu act”)

问题是,为什么只有黑色背景从左边滑入,而 HTML 元素中的文字却留在屏幕上?

【问题讨论】:

    标签: javascript css webkit css-transitions transition


    【解决方案1】:

    您根本没有移动/滑动ul,只是改变了宽度。

    ul 没有宽度,因此无法显示背景。文本溢出了零宽度元​​素,这就是它仍然可见的原因。

    然后,当您扩大宽度时,背景变得可见。

    我已将此切换为 :hover 以进行演示。

    body {
      background: red;
    }
    .menu {
      position: absolute;
      width: 0px;
      background: #111;
      -webkit-transition: width 2s;
      transition: width 0.5s;
      color: white;
    }
    .menu:hover {
      position: absolute;
      background: #111;
      width: 67%;
    }
    <div class="menu">
      <ul>
        <li>list item 1</li>
        <li>list item 2</li>
      </ul>
    </div>

    相反,尝试将宽度保留为 67% 并调整位置..像这样。

    body {
      background: red;
      height: 100vh;
    }
    .menu {
      position: absolute;
      top: 0;
      left: -67%;
      width: 67%;
      background: #111;
      transition: left 0.5s;
      color: white;
    }
    body:hover .menu {
      left: 0;
    }
    <div class="menu">
      <ul>
        <li>list item 1</li>
        <li>list item 2</li>
      </ul>
    </div>

    OR 与 transform 那么“定位”将是自动的。

    body {
      background: red;
      height: 100vh;
    }
    .menu {
      position: absolute;
      top: 0;
      left: 0;
      width: 67%;
      transform: translateX(-100%);
      background: #111;
      transition: transform 0.5s;
      color: white;
    }
    body:hover .menu {
      transform: translateX(0%);
    }
    <div class="menu">
      <ul>
        <li>list item 1</li>
        <li>list item 2</li>
      </ul>
    </div>

    【讨论】:

    • 找到答案!为了进一步理解:在后一种情况下,您将
        元素移动到背景中(屏幕外)?另外,“文本溢出零宽度元素”到底是什么意思-我怎么知道文本溢出后将采用什么形式(换行符等)?非常感谢
    • 溢出的文本通常会占用最小的宽度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2023-03-10
    • 2012-12-29
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多