position(定位)
1 static
static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。
2 position: relative/absolute
relative 相对定位。相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
注意:position:relative的一个主要用法:方便绝对定位元素找到参照物。
absolute 绝对定位。
定义:设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
重点:如果父级设置了position属性,例如position:relative;,那么子元素就会以父级的左上角为原始点进行定位。这样能很好的解决自适应网站的标签偏离问题,即父级为自适应的,那我子元素就设置position:absolute;父元素设置position:relative;,然后Top、Right、Bottom、Left用百分比宽度表示。
另外,对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。
总结:参照物用相对定位,子元素用绝对定位,并且保证相对定位参照物不会偏移即可。
3 position:fixed
fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。 注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这 是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。
在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。
4 仅使用margin属性布局绝对定位元素
此情况,margin-bottom 和margin-right的值不再对文档流中的元素产生影响,因为该元素已经脱离了文档流。另外,不管它的祖先元素有没有定位,都是以文档流中原来所在的位置上偏移参照物。
图9中,使用margin属性布局相对定位元素。
层级关系为:
<div ——————————— position:relative;
<div—————————-没有设置为定位元素,不是参照物
<div———————-没有设置为定位元素,不是参照物
<div box1
<div box2 ——–position:absolute; margin-top:50px; margin-left:120px;
<div box3
效果图:
关于css的拾遗
1:inline-block 的间隙
inline-block默认的空格符就是标签与标签之间的空隙造成的。
(1) 我们可以通过margin:-3px来解决,但是
1.我们布局肯定很多元素,不可能每个都添加margin负这样维护成本太大了
2.我们线上代码如果压缩,那么我们就不存在哪个4px的问题了,那么我们的margin负就回造成布局混乱!
(2)我们可以给几个标签加一个父级div,然后:
div{word-spacing: -5px;}
2:word-wrap & word-break:
word-wrap:
word-wrap CSS 属性用于指定是否允许浏览器,在单词中断行以防止在其他无法破解的情况下溢出,字符串太长,放不下。
word-wrap 属性由 Microsoft 发明并添加到 CSS3 中。它允许长单词能够被打破并换行到下一行。它接受两个值;正常或断言。
word-break:
word-break CSS 属性用于指定如何(或是否)在单词中换行
3:一旦给元素加上absolute或float就相当于给元素加上了display:block;。什么意思呢?比如内联元素span默认宽度是自适应的,你给其加上width是不起作用的。要想width定宽,你需要将span设成display:block。但如果你给span加上absolute或float,那span的display属性自动就变成block,就可以指定width了。
4:快写
div.div*5 再按tab键
5:文本溢出
overflow属性规定当内容溢出元素框时发生的事情,这个属性定义溢出元素内容区的内容会如何处理。如果值为 scroll,不论是否需要,用户代理都会提供一种滚动机制。因此,有可能即使元素框中可以放下所有内容也会出现滚动条。
值 | 描述 |
---|---|
visible | 默认值。内容不会被修剪,会呈现在元素框之外。 |
hidden | 内容会被修剪,并且其余内容是不可见的。 |
scroll | 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 |
auto | 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。 |
inherit | 规定应该从父元素继承 overflow 属性的值。 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="keywords" content="css的position定位"> <meta name="description" content="study"> <meta http-equiv="Refresh" content="1800;https://www.baidu.com"> <meta http-equiv="x-ua-compatible" content=""> <title>标题</title> <link rel="stylesheet" href="day113.css"> <link rel="icon" href=""> <!--<script src="js.js"></script>--> </head> <body> <div class="outer"> <div class="div1" id="abc"></div> <div class="div2"></div> <div class="div3"></div> <div class="div4"></div> </div> <div class="div5"></div> <div class="div6"> <a href="#abc">返回顶部</a> </div> <p class="p1">hello yuan hello yuan hello yuan hello yuan hello yuan</p> <p class="p2">helloyuanhelloyuanhelloyuanhelloyuanhelloyuanhelloyuan</p> <div class="div7">文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出 文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出 文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出 文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出 文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出文字溢出</div> </body> </html>
*{ margin: 0px; } .div1{ width: 200px; height: 100px; background-color: #d900ff; } .div2{ width: 200px; height: 150px; background-color: slateblue; position: static; /*static为默认值,设置left这些没有用*/ left: 100px; } .div3{ width: 200px; height: 200px; background-color: skyblue; position: relative; /*relative是相对定位,以自己为参照物;但未脱离文档流,之前的位置依旧占用*/ left: 100px; top: 100px; } .div4{ width: 200px; height: 250px; background-color: brown; position: absolute; left: 100px; top: 600px; /*absolute是绝对定位对象脱离正常文档流,父级div没有定位,所以找到body标签进行定位;如果父级div有定位,那么就以父级为参照物*/ } .div5{ height: 1500px; background-color: yellow; } .div6{ width: 80px; height: 80px; background-color: pink; position: fixed; /*fixed(固定死)对象脱离正常文档流,以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动*/ bottom: 10px; right: 10px; text-align: center; /*文字横向排列*/ line-height: 80px; /*文本行高*/ } .p1{ width: 100px; background-color: #84a42b; word-wrap: break-word; word-break: break-all; } .p2{ width: 100px; background-color: darkgoldenrod; word-wrap: break-word; word-break: break-all; } .div7{ height: 100px; width: 200px; background-color: burlywood; overflow: scroll; }