CSS 文本和背景的过渡
CSS transtition on both text and background
我正在移动设备上使用 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 代码将菜单的 class 更改为 "menu act")
问题来了,为什么只有黑色背景从左边滑进来,而HTML个元素里面的文字还在屏幕上?
你根本不是 moving/sliding 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>
或使用 转换 然后 "positioning" 将是自动的。
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>
我正在移动设备上使用 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 代码将菜单的 class 更改为 "menu act")
问题来了,为什么只有黑色背景从左边滑进来,而HTML个元素里面的文字还在屏幕上?
你根本不是 moving/sliding 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>
或使用 转换 然后 "positioning" 将是自动的。
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>