Jquery IE11的条件注释脚本不可能?解决方案

Jquery IE11的条件注释脚本不可能?解决方案,jquery,css,conditional-comments,internet-explorer-11,Jquery,Css,Conditional Comments,Internet Explorer 11,在创建一个网站(queenalright.co.uk)时,我遇到了IE中固定div居中的问题。这变得更加困难,因为我试图创建一个响应性布局,因此各种元素的宽度需要流动。我用一个名为“头到目标”的脚本解决了这个问题。从那时起,IE11已经发布,并且(在它的前瞻性思维中)删除了条件注释,但没有添加对固定或绝对div元素居中的支持 解决问题的最佳方法是什么?或者是否有一种更简单的方法来解决这个问题,我不知道 以下是脚本: // script to achieve horizontal centerin

在创建一个网站(queenalright.co.uk)时,我遇到了IE中固定div居中的问题。这变得更加困难,因为我试图创建一个响应性布局,因此各种元素的宽度需要流动。我用一个名为“头到目标”的脚本解决了这个问题。从那时起,IE11已经发布,并且(在它的前瞻性思维中)删除了条件注释,但没有添加对固定或绝对div元素居中的支持

解决问题的最佳方法是什么?或者是否有一种更简单的方法来解决这个问题,我不知道

以下是脚本:

// script to achieve horizontal centering in internet exporer! Grrrrr!

function topSize() {


    // get screen width
    var screenWidth = $(window).width();

    // resize
    var halfScreenWidth = screenWidth/2;
    var topWidth = $('#top').width();
    var topBGWidth = $('#top-bg').width();
    var minusMarginInner = (-1)*(topWidth/2);
    var minusMarginBG = (-1)*(topBGWidth/2);


    $('#top').css({
        "left":"50%",
        "right":"auto",  // overwrites the right 1% property previously used for centering
        "margin-left":minusMarginInner + "px"
    });

    $('#top-bg').css({
        "left":"50%",
        "right":"0",  // overwrites the right 1% property previously used for centering
        "margin-left":minusMarginBG + "px"
    });

}


$(document).ready(function() {
var screenWidth = $(window).width();
if (screenWidth >= 1096) {
    topSize();
}
}); // document ready test window size and run topsize function

$(window).resize(function() {
var screenWidth = $(window).width();
if (screenWidth >= 1096) {
    topSize();
}
}); // window resize test window size and run topsize function

如果你发现自己在问如何单独瞄准IE,你最好休息一下,重新考虑一下你正在采取的方法。Internet Explorer可以像任何其他浏览器一样完全集中/固定元素。在这种情况下,您采用的方法不是最适合跨浏览器的。我可以提出一个替代方案吗

.center{
位置:固定;
左:50%;
转化:translateX(-50%);
}

这种方法在所有现代浏览器中都是一样的,给你一个一致的体验。我创建了一个小的演示小提琴来演示这一点:。

IE11不支持有条件的评论,事情到此为止。您必须解析userAgent字符串或使用其他方法来检测浏览器,并使用
var soAndSo=function(){
而不是
function soAndSo(){
并将其放入检查IE11的
if
语句中,该语句在userAgent字符串中没有提供任何标识自身为IE的内容。这非常感谢。为了安全起见,我保留了IE9以下版本的脚本。