利用transform的bug使fixed相对于父级定位

首先,大家都清楚,元素使用fixed之后,若不设置top与left则会相对于最近的使用定位的父元素,并位于父元素的原点位置设置top与left值时,则会相对于窗口定位。但无论如何,此时仍相对于窗口定位,在此不过多描述。

今天发现的是当某一元素使用transform属性后,其所有使用fixed定位的子元素的fixed属性都会失效。此处可查看W3C文档https://www.w3.org/TR/css-transforms-1/#issue-ca2c412c

因此可以利用此bug时fixed元素相对于父级定位,而非相对于窗口定位。

<div class="trans-box">
    <div class="outer">
        <div class="inter"></div>
    </div>
</div>

在此需要注意,当inter元素设置top与left值时,则会相对于outer之外最近的使用定位的元素,而非相对于outer元素。有兴趣的朋友可以demo下试试。

*{
    padding: 0;
    margin: 0;
}
body{
    height: 2000px;
}
.outer{
    position: relative;
    width: 800px;
    height: 800px;
    background: #ff0;
    top: 100px;
    left: 100px;
    overflow: auto;
}
.inter{
    position: fixed;
    width: 200px;
    height: 200px;
    background:#f00;
    top: 50px;
    left: 50px;
}
.trans-box{
    width: 1000px;
    height: 1000px;
    background: #c0c0c0;
    position: relative;
    top:50px;
    left: 50px;
    -webkit-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
}

时间: 2024-11-10 01:07:02

利用transform的bug使fixed相对于父级定位的相关文章

利用键盘左右键使图像左右移动,上下键使图像的两个纹理可见度比例上下调整

利用键盘左右键使图像左右移动, glm::mat4 trans; trans = glm::translate(trans, glm::vec3(translation, 0.0f, 0.0f)); glUniformMatrix4fv(glGetUniformLocation(ourShader.ID, "transform"), 1, GL_FALSE, glm::value_ptr(trans)); 1 void processInput(GLFWwindow* window)

transform 遇上 position: fixed

最近遇到一个有意思的现象,以下 demo 中 fixed 的元素没有相对 viewport 定位,而是相对于它的父元素进行定位. <html> <head> <style> .parent { width: 200px; height: 300px; background: yellow; transform: scale(1); } .fixed { position: fixed; left: 0; right: 0; bottom: 0; background:

CSS清除浮动使父级元素展开的三个方法

点评:一个没有设置高度的容器div内如果存在浮动元素(即使用了属性float:left或者float:right),那么该父级元素会无法展开,下面举个例子为大家详细介绍下,希望对大家有所帮助 一个没有设置高度的容器div内如果存在浮动元素(即使用了属性float:left或者float:right),那么该父级元素会无法展开. 举个例子,有一个div容器,div容器里有两个小容器,分别向左和向右浮动,为了区别这三个容器,分别设置了不同颜色的边框. 复制代码 代码如下: <html> <h

position:fixed相对父级元素定位而不是浏览器

position:fixed默认是相对浏览器定位的 原理:fixed定位相对父级容器定位,不添加:top,bottom,left,right样式,通过margin定位 代码:http://jsbin.com/tegodideyi/edit?html,css,output HTML布局: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="view

WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象

简介 本文将完整叙述我利用VisualTreeHelper实现题述功能的全部过程,想直接看函数实现的朋友可以跳到函数实现部分. 或者直接在GitHub上下载源码. 在WPF中我们经常会遇到这种情况:当我们尝试着去寻找窗体或者页面中某个控件的子控件或者父控件的时候,我们只能寻找到它的第一级的逻辑子级对象或者父级对象.当我们想更深入的时候,就没有办法了. 甚至在我们自定义的DataTemplate中的控件,我们都没办法对其访问.比如在ListView中自定义的控件,我们就没办法获取指定位置的控件了.

在CSS3中,可以利用transform功能来实现文字或图像的旋转、缩放、倾斜、移动这四种类型的变形处理

CSS3中的变形处理(transform)属 transform的功能分类 1.旋转 transform:rotate(45deg); 该语句使div元素顺时针旋转45度.deg是CSS 3的"Values and Units"模块中定义的一个角度单位. 2.缩放 transform:scale(0.8,1); 使用缩放的方法实现文字或图像的缩放效果,在参数中指定缩放倍率.该语句使用scale方法使该元素在水平方向上缩小了20%,垂直方向上不缩放. 3.倾斜 transform:ske

tableView使用定时器CADisplaylink改变imageView的transform的bug

在UITableViewCell的imageView中,设置定时器CADisplayLink调用CGAffineTransformRotate改变transform时, 点击UItableViewCell时,会导致图标变形,代码如下: @property(nonatomic,strong)CADisplayLink *link; -(CADisplayLink *)link { if (_link == nil) { //使用transform的方式旋转,每隔1/60秒移动一次,会改变image

利用美颜SDK技术使直播源代码更加完善

直播行业最近融资不断,让整个行业的生命力再次上升.为了行业更好更快的发展,业内技术人员对直播源代码展开新一轮的研究!通过加入美颜SDK让直播源代码作为直播行业生命力具体的展示,我们来看一下加入美颜SDK后,直播源代码作为一块基石,是怎样得到广大用户的喜爱的? 1).首先是音频采集方面的升级音频数据既能与图像结合组合成音视频数据,也能以纯音频的方式采集播放,后者在很多成熟的应用场景如在线电台和语音电台等起着非常重要的作用.音频的采集过程主要通过设备将环境中的模拟信号采集成 PCM 编码的原始数据,

swiper 父级元素display:none 之bug

问题描述: 同一个页面,点击底部tab按钮切换div的显示与隐藏,点击到第四个页面时 轮播图总是不动,出bug var mySwiper = new Swiper('.swiper-contain', { autoplay: 3000,//可选选项,自动滑动 speed: 300, loop: true, observer: true, observerParents: true});加入监视器的两个属性后 也还是没动,这个时候就再加上update()的方法了 // 点击按钮方法 切换divfu