加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

html – 为什么translateX不能像IE9,IE10和IE11上的固定元素一样

发布时间:2020-12-14 18:30:49 所属栏目:资源 来源:网络整理
导读:我试图在IE9,IE10和IE11中实现以下功能(在Chrome和FF上完美运行): 在移动模式下,我有一个主#container包装器,它包含整个站点内容和一个导航侧菜单div,它位于#container内(不能移出,顺便说一句),但是不可见,并且隐藏在屏幕外.当用户单击菜单打开切换按钮时,
我试图在IE9,IE10和IE11中实现以下功能(在Chrome和FF上完美运行):

在移动模式下,我有一个主#container包装器,它包含整个站点内容和一个导航侧菜单div,它位于#container内(不能移出,顺便说一句),但是不可见,并且隐藏在屏幕外.当用户单击菜单打开切换按钮时,它应将#container向右滑动,显示直接位于其左侧的导航侧菜单div.使用translateX进行“滑动”,一旦“open”类通过切换应用于它,就会分配.在IE中,我按预期获得动画部分,但没有可见的侧面导航(仅限空白空间).

#container {
    height: 100%;
    position: relative;
    transition: transform ease .5s;
    width: 100%;
}
#container.open {
    position: fixed;
    transform: translateX(300px);
}

#nav-side-menu {
    left: -300px;
    height: 100%;
    overflow: scroll;
    position: fixed;
    top: 0;
    width: 300px;
}

解决方法

这里的问题是使用position:在一个转换元素中修复.根据规范,当使用固定定位元素时…包含块由视口建立. There is a debate关于转换后的元素是否应该是固定后代的包含块,但Internet Explorer目前不支持这一点.

在这个特定的实例中,您可以通过完全避免CSS转换来避免跨浏览器的复杂性.相反,尝试使用left属性横向移动包含元素.下面是我的标记 – 我相信这是你的合理反映:

<article>
    <nav>
        <p>This is the navigation portion.</p>
    </nav>
    <section>
        <p>This is the content portion.</p>
    </section>
</article>

如上所述,以下方法使得相对定位的容器的关键使用通过转换(自IE10支持)左侧属性而左右移动.我们还使用calc函数(自IE9起支持)来确定更好的尺寸和偏移量:

body {
    margin: 0;
    overflow-x: hidden;
}

article {
    left: -300px;
    position: relative;
    transition: left 2s;
    box-sizing: border-box;
    width: calc(100% + 300px);
    padding: 0 1em 0 calc(300px + 1em);
}

article.open {
    left: 0px;
}

nav {
    position: fixed;
    width: 300px; height: 100%;
    margin: -1em auto auto calc(-300px - 1em);
}

这种方法可以在Internet Explorer,Chrome和Firefox中提供更一致的体验.最终结果可在此处在线查看:http://jsfiddle.net/jonathansampson/vxntq8b1/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读