【问题标题】:Linear gradient percentages vs pixels线性梯度百分比与像素
【发布时间】:2013-07-10 12:34:59
【问题描述】:

我有两个例子,据我所知,这两个应该是相同的。

百分比是根据960px;的宽度计算的

这是像素版本,看起来效果很好。

.pixel {
    background-color: #111111;
    background-image: linear-gradient(90deg, transparent 40px, #444 20px );
    background-size: 60px, 950px;
    background-position: 10px, 10px;
}

但是,基于相同百分比的渐变不起作用:

.percentage {
    background-color: #111111;
    background-image: linear-gradient(90deg, transparent 4.1666%, #444 2.08333%);
    background-size: 6.25%, 98.95833%;
    background-position: 1.04167%, 1.04167%;
}

我想使用百分比,这样当容器缩小时这个渐变是流动的。

演示: http://jsfiddle.net/shannonhochkins/A3Z2L/3/

【问题讨论】:

    标签: css gradient percentage


    【解决方案1】:

    看起来linear-gradient 中的百分比加起来应该是 100%。

    您的第二个示例是说“在background-size 的 6.25% (60px) 内,前 4.1666% 是透明的,接下来的 2.08333% 是灰色的”,但您没有指定剩余 93.75007% 的颜色是什么应该是 60px。 (看起来它只是为剩余空间使用最后一种颜色,所以在 60 像素的背景尺寸内,你有 4.1666% 的透明和剩余的 95.8334% 的灰色。)

    鉴于您在第一个示例中的比例为 66%/33%,您的第二个示例应该使用 linear-gradient(90deg, transparent 66.6667%, #444 33.3333%)

    【讨论】:

    • 也,不相关,但是我应该为 '-webkit-, -o-, -moz-' 制作这个渐变的版本吗?
    • 第一种情况下的 20px 值和第二种情况下的 33.3% 都没有用。任何低于前一个的停止值都将设置为该值。因此,在第一种情况下,0px 和 40px 之间的任何值都会在 40px 处从透明变为红色。任何高于 40px 的值都会产生柔和的过渡。例如,将第二个停止设置为 42px 将在 2 px 期间进行过渡。百分比也是如此
    【解决方案2】:

    背景图片中的百分比不是基于 1000 像素。它基于背景大小。在这种情况下,您需要 60px 的 66.6%。

    .percentage {
    background-color: #111111;
    background-image: linear-gradient(90deg, transparent 66.6666%, #444 2.08333%);
    background-size: 6.25%, 98.95833%;
    background-position: 1.04167%, 1.04167%;
    }
    

    【讨论】:

    • 谢谢!虽然linear gradient 的第二个宽度不正确,但它应该是 3.333 recurring :)
    • @ShannonHochkins 你的意思是 33.3333。我在 Chrome 中更改了高度值,但没有任何区别。据我所知,它在现实生活中的作用。
    • 我确实说过重复,但无论如何,第二个参数是水平间距,所以你知道
    猜你喜欢
    • 2019-08-20
    • 2014-10-22
    • 2019-01-14
    • 2011-04-07
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多