gpt4 book ai didi

html - 创建一个褪色列表

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:38 25 4
gpt4 key购买 nike

我的目标是创建一个列表,其中第一个 <li> 的文本几乎是白色的 ( #CCC ) 并且每个 <li>在这变得更暗之后。最后<li>应该几乎是黑色的(或几乎为 0% 的不透明度)。

这个想法是创建一种淡入淡出的文本效果无需 Javascript

我尝试添加一个带有渐变背景的叠加 div,使用不透明度逐渐隐藏文本,但发生了这些问题:

  • 主 div 内的渐变不透明度未达到 0%。这是因为它的高度与主 div 的高度不同。由于主 div 可以更改高度(我打算动态添加一些 <li> ),所以我无法将叠加层的高度设置为固定大小。
  • 因为渐变在 <ul> 之上, 我无法选择 <li> 中的文本.

此外,<li> 的填充使 <li>右侧溢出。自宽主<div>最后将以百分比而不是像素为单位,我也无法将宽度设置为固定大小。

这是我的代码(代码片段没有显示渐变)以及一些关于问题的解释:

<html>
<head>
<meta charset="UTF-8">
<title>Fading overlay test</title>
<style>
body{
background-color: black;
color: #ccc;
font-family: sans-serif;
font-size: 16px;
}

.fade_test{
border: 1px solid #ccc;
width: 300px;
max-height: 570px;
overflow: hidden;
padding: 0;
}

.fade_test ul{
float: left;
margin: 0;
padding: 0;
list-style-type: none;
}

.fade_test li{
display: inline-block;
border: 2px solid #0000FF;
width: 100%;
padding: .61em;
}

.fading_overlay{
position: relative;
width: 100%;
height: 100%;
background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 1));
}
</style>
</head>
<body>
<div class="fade_test">
<ul>
<li>Line n°1. Because of the padding, we can't see the blue right border. &#8594;</li>
<li>Line n°2. The overlay is on top of this text. Therefore, we cannot select this text.</li>
<li>Line n°3</li>
<li>Line n°4</li>
<li>Line n°5</li>
<li>Line n°6</li>
<li>Line n°7</li>
<li>Line n°8</li>
<li>Line n°9</li>
<li>Line n°10</li>
<li>Line n°11</li>
<li>Line n°12. This is at the bottom of the ".fade_test". This should be almost 100% black (we shouldn't be able to read this).</li>
<li>Line n°13. This one is invisible (it overflows), it's a desired behaviour.</li>
</ul>
<div class="fading_overlay"></div>
</div>
<p>
</body>
</html>

我曾尝试使用颜色来淡化文本,但想不出一种方法来完成淡化部分。我也试过弄乱高度、宽度、位置、 float 、不透明度甚至 calc() 但都没有用。到目前为止,该代码最接近我想要的。

代码不需要与 IE 兼容,并且可以使用可用的最新 CSS 技术。我只是不想使用 Javascript(如果可能的话)。

最佳答案

要解决与覆盖 div 的高度有关的第一个问题,您可以将 position: relative; 添加到 .fade_test 并更改 position: relative;宽度:100%;高度:100%position:absolute;顶部:0;左:0;右:0; bottom: 0;.fading_overlay

要解决覆盖阻止与列表项交互的问题,您可以将 pointer-events: none; 添加到覆盖类。这将使所有指针事件(例如鼠标点击等)都通过。

要解决 li 填充的问题,只需将 box-sizing: border-box; 添加到 .fade_test li

参见 JSFiddle

关于html - 创建一个褪色列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37357572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com