javascript - 像素和浏览器与我的 jQuery 效果有关的小问题

标签 javascript jquery css xhtml

为了突出显示某个 p 元素,我编写了一些 JS 使其显示在黑暗的背景之上。

为了做到这一点,我使用 jQuery 创建了一个叠加层,然后克隆了信息 p 元素并将其绝对定位在叠加层上。

因为它删除了一些 CSS 属性(由于页面中的新位置而没有被继承),我使用 jQuery 来添加它们。

几乎完美地工作。在我的 Mac OS X 上的 Firefox 3.5.6 中,当它消失时,像素问题略有差异。我知道这很挑剔,但我希望它消失并且最终用户不知道其中的区别。

此处提供测试:https://www.ikatanspa.com/book-online/?test

这里也是 jQuery 函数

var highlightFormSuccess = function() {

    var fadeTo = 0.6;

    var $info = $('p.information');

    if ($info.length) {


        // make overlay

        var $overlay = $('<div />')
            .css({
                display: 'none',
                width: '100%',
                height: $(document).height(),
                position: 'absolute',
                top: 0,
                left: 0,
                zIndex: 32767,
                opacity: 0
            })
            .attr({
                id: 'overlay'
            })
            .appendTo('body');

        // pull out success block and position above overlay

        var left = $info.position().left,
            top = $info.position().top,
            fontSize = $info.css('font-size'),
            width = $info.width(),
            color = $info.css('color'),
            lineHeight = $info.css('line-height');


        var $newInfo = $info.clone()
                            .css({
                                position: 'absolute',
                                top: top,
                                left: left,
                                'font-size': fontSize,
                                'line-height': lineHeight,
                                width: width,
                                color: color,
                                zIndex: 32767
                            })
                            .appendTo('body');

        $overlay
        .show()
        .fadeTo(1000, fadeTo);
        // wait then fade back out
        setTimeout(function() {

            $($overlay, $newInfo).fadeOut(1000, function() {
                $newInfo.fadeOut(250, function() { $(this).remove(); } );
            });

        }, 2500);


    };


};

最佳答案

也许你可以让事情变得更容易一些。我只是通过将段落规则设置为以下内容来复制所需的效果:

p.highlight {
  position:relative;
  background-color:#ffffff;
  z-index:10;
}

我的叠加层:

div.overlay {
  position:fixed;
  background-color:#000000;
  z-index:5; // lower than my paragraph, higher than all else
  top:0; left:0; width:100%; height:100%;
}

--

<body>
  <div class="overlay"></div>
  <p>I'm a paragraph.</p>
  <p class="highlight">I too am a paragraph.</p>
</body>

关于javascript - 像素和浏览器与我的 jQuery 效果有关的小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2010247/

相关文章:

javascript - 无法在 Angular 6 中设置未定义的属性 'title'

javascript - Facebook、Twitter、LinkedIn 共享链接数

javascript - 你能给我一个 "Bad line breaking before ' ?'"的例子吗?

jquery - 向 iframe 添加高度会使调整大小变得不稳定

html 属性是否正确(就标准而言)?

javascript - 为什么这个设计中心不对齐?

html - 需要一些验证错误的帮助

javascript - Windows 8 Metro 和 HLS/MPEG-DASH

jquery - 从 Bootstrap 模式获取数据

javascript - 需要优化的解决方案,用于隐藏选择框选项