Небольшая проблема с пикселями и браузером с моим эффектом jQuery - PullRequest
0 голосов
/ 06 января 2010

Чтобы выделить определенный элемент p, я написал несколько JS, чтобы он отображался над затемненным фоном.

Чтобы сделать это, я использовал jQuery для создания наложения, а затем клонировал элемент информации p и абсолютно поместил его поверх наложения.

Поскольку в нем пропущено несколько свойств CSS (не наследуемых из-за новой позиции на странице), я использовал jQuery для их добавления.

Работает почти отлично. В моем Firefox 3.5.6 на Mac OS X, когда он исчезает, наблюдается небольшая разрозненность в размере пикселей. Я знаю, что это придирчиво, но я бы хотел, чтобы оно исчезло, и конечный пользователь не почувствовал разницу.

Тест доступен здесь: 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);


    };


};

1 Ответ

2 голосов
/ 06 января 2010

Возможно, вы можете сделать вещи немного проще. Я просто воспроизвел желаемый эффект, установив правила абзаца:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...