【问题标题】:CSS masking or alternatives to achieve a radial focusCSS遮罩或替代方法来实现径向焦点
【发布时间】:2013-11-10 08:36:42
【问题描述】:

上面的图片是一个想法,假设我有一个覆盖页面的固定 dix,我想专注于一个区域。

.fixed-full {
    background-color: rgba(0, 0, 0, 0.6);
    position: fixed;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    width: 100%;
    height: 100%;
    z-index: 9;
 }

我没有看到上面的内容与我想要完成的工作一起使用,我需要使用蒙版或径向渐变。

我读了一些关于 webkit masking 和 svg masking 的 tuts,弄起来有点乏味,我希望得到建议。

我玩了一些盒子阴影box-shadow: -20px 30px 380px 280px rgba(0, 0, 0, 0.7) inset;,它的效果很酷,但不是我想要的。

不介意使用 javascript 解决方案。

CSS 结果: 感谢 vals

CSS 结果: 基于 Rémi 的方法,谢谢 看起来不错,但很难得到一个清晰的圆圈,也许如果我摆弄它:)

【问题讨论】:

    标签: css


    【解决方案1】:

    您可以使用径向渐变来实现您想要的效果,例如(带着红色面具):

    background: radial-gradient(200px 100px at 100px 50px, rgba(255, 0, 0, 0) 40%, rgba(255, 0, 0, .8));
    

    就像这个小提琴http://jsfiddle.net/gmqFe/1/ (注​​意:文本有黄色背景,面具是红色)

    为了更好地控制模糊区域,您还可以使用像素而不是百分比作为停止位置(高于,40%),那么只有前两个参数的比率很重要,例如:

    background: radial-gradient(10px 5px at 100px 50px, rgba(255, 0, 0, 0) 200px, rgba(255, 0, 0, .8) 202px);
    

    【讨论】:

    • 这很酷,但是太模糊了,我无法将其调整为纯圆形。
    • 你实际上可以jsfiddle.net/gmqFe/2(见 40% 和 45%)(如果你真的不想模糊,可以随意放 40% 40%)
    • 酷 1+ 但它不是一个光滑的圆,边缘有点波涛汹涌。然而,我确实喜欢圆的定位,它比使用像 vals 方法的边距要容易得多。两者的优点和缺点.. 这是一个小提琴jsfiddle.net/gmqFe/4 它是你的,但你可以看到将圆圈居中是多么容易..
    • 哇是的,这绝对是一种值得考虑的方法。我真的很喜欢这两种方法,让我玩一玩,看看什么更适合我想要更好地完成的工作。如果我能同时投票,我会的。
    【解决方案2】:

    您可以更轻松地获得它

    CSS

    .mask {
    position: absolute;
    background-color: rgba(200, 200, 200, 0.5);
    border-radius: 50%;
    width: 116px;
    height: 116px;
    left: 29px;
    top: 61px;
    border-color: rgba(20, 20, 20, 0.7);
    border-width: 500px;
    margin: -500px;
    border-style: solid;
    }
    

    您只需将 div 设置为border-radius,使其为圆形,而background-color 是圆形中更透明的颜色。然后设置一个大边框(我用的是500px,如果需要可以走高一些)。为了使定位更容易,设置与负边距相同的数量。并将边框颜色设置为您想要的任何颜色。

    fiddle

    如果您想更轻松地转到屏幕中的某个确定点,您可以使边距完全补偿边距和大小。比如

    border-width: 1000px;
    height: 100px;
    width: 100px;
    margin: -1050px;
    

    边距补偿边框和一半大小,因此设置 top = y left = x 将设置圆在 x y 周围

    【讨论】:

    • 嘿,从来没有想过这样的事情。谢谢让我试试看。
    • 这很好,谢谢。我想了解这背后的一些数学知识,让边框达到 100% 的最佳方法是什么,最重要的是,什么是精确定位页面位置以使其与所有屏幕尺寸一致的好方法.我将它应用到我的项目中并且看起来不错(上面的屏幕截图)。我只是想让它保持一致。
    • 我已经添加了另一个数学来让你想要的圆圈更容易。
    • 非常感谢.. 在它上面添加一个过渡并将其用作游览模式会很好。能够更有效地计算它将使我能够根据我想要显示的内容添加一个类。好的,我现在明白了。
    猜你喜欢
    • 2012-08-18
    • 2014-11-17
    • 1970-01-01
    • 2015-03-23
    • 2014-02-09
    • 2018-05-29
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多