>

JavaScript(自己理解的注解sbf282.com:),'廊坊分行

- 编辑:澳门博发娱乐官网 -

JavaScript(自己理解的注解sbf282.com:),'廊坊分行

聊聊 CSS3 中的 object-fit 和 object-position

2016/11/22 · CSS · CSS3

本文作者: 伯乐在线 - TGCode 。未经作者许可,禁止转载!
欢迎加入伯乐在线 专栏作者。

最近一直忙于将JavaScript学习的笔记整理成电子书,也没什么空闲时间写新的文章。趁着今天有点空闲,决定再来折腾一下CSS3中的两个属性:object-fitobject-position

这两个奇葩的属性是做什么的呢?其实它们是为了处理替换元素(replaced elements)的自适应问题,简单的说,就是处理替换元素的变形(这里指长宽比例变形)问题。

等等,好像多了一个名词,啥叫替换元素?替换元素其实是:

  • 其内容不受CSS视觉格式化模型控制的元素,比如image,嵌入的文档(iframe之类)或者applet,叫做替换元素。比:img元素的内容通常会被其src属性指定的图像替换掉。替换元素通常有其固有的尺寸:一个固有的宽度,一个固有的高度和一个固有的比率。比如一幅位图有固有用绝对单位指定的宽度和高度,从而也有固有的宽高比率。另一方面,其他文档也可能没有固有的尺寸,比如一个空白的html文档。
  • CSS渲染模型不考虑替换元素内容的渲染。这些替换元素的展现独立于CSS。object,video,textarea,input也是替换元素,audio和canvas在某些特定情形下为替换元素。使用CSS的content属性插入的对象是匿名替换元素。

这个当然不是我头脑风暴来的,而是引用别人的解释:引用

常见的替换元素有<video>、<object>、<img>、<input type=”image”>、<svg>、<svg:image>和<svg:video>等。

要是看的稀里糊涂的也没关系,接着往下看,我相信你会懂得!

1、object-fit

语法:

object-fit: fill | contian | cover | none | scale-down;

1
object-fit: fill | contian | cover | none | scale-down;
  • fill : 默认值。填充,可替换元素填满整个内容区域,可能会改变长宽比,导致拉伸。
  • contain : 包含,保持原始的尺寸比例,保证可替换元素完整显示,宽度或高度至少有一个和内容区域的宽度或高度一致,部分内容会空白。
  • cover : 覆盖,保持原始的尺寸比例,保证内容区域被填满。因此,可替换元素可能会被切掉一部分,从而不能完整展示。
  • none : 保持可替换元素原尺寸和比例。
  • scale-down : 等比缩小。就好像依次设置了none或contain, 最终呈现的是尺寸比较小的那个。

不好意思,我又要摆妹子来诱惑你们了,看效果图:

sbf282.com 1

上面的五个例子的代码:

<style> .box{ position:relative; float:left; margin:0 10px 40px 10px; width:150px; height:150px; } .box>img{ width:100%; height:100%; background-color:#000; } .fill{ object-fit:fill; } .contain{ object-fit:contain; } .cover{ object-fit:cover; } .none{ object-fit:none; } .scale{ object-fit:scale-down; } </style> <div class="box"> <img src="example-girl.jpg" class="fill" alt=""> </div> <div class="box"> <img src="example-girl.jpg" class="contain" alt=""> </div> <div class="box"> <img src="example-girl.jpg" class="cover" alt=""> </div> <div class="box"> <img src="example-girl.jpg" class="none" alt=""> </div> <div class="box"> <img src="example-girl.jpg" class="scale" alt=""> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<style>
.box{  
  position:relative;  
  float:left;  
  margin:0 10px 40px 10px;  
  width:150px;  
  height:150px;  
}  
.box>img{  
  width:100%;  
  height:100%;  
  background-color:#000;  
}  
.fill{  
  object-fit:fill;  
}  
.contain{  
  object-fit:contain;  
}  
.cover{    
  object-fit:cover;  
}  
.none{  
  object-fit:none;  
}  
.scale{  
  object-fit:scale-down;  
}  
</style>
 
<div class="box">  
  <img src="example-girl.jpg" class="fill" alt="">  
</div>  
<div class="box">  
  <img src="example-girl.jpg" class="contain" alt="">
</div>  
<div class="box">  
  <img src="example-girl.jpg" class="cover" alt="">
</div>  
<div class="box">  
  <img src="example-girl.jpg" class="none" alt="">
</div>  
<div class="box">  
  <img src="example-girl.jpg" class="scale" alt="">
</div>

看到这些效果,我想同志们最关心的的应该是兼容性,点这里点这里

2、object-position

object-position属性决定了它的盒子里面替换元素的对齐方式。

语法:

object-position: <position>

1
object-position: <position>

默认值是50% 50%,也就是居中效果,其取值和CSS中background-position属性取值一样。(如果不熟悉background-position,可以瞄瞄这里《CSS3 Background》)

例如:替换元素位于内容区域的左上角

img{ object-fit: contain; object-position: 0 0; }

1
2
3
4
img{
  object-fit: contain;
  object-position: 0 0;
}

效果图:

sbf282.com 2

例如:替换元素相对于左下角10px 10px地方定位

img{   object-fit: contain;   object-position: bottom 10px left 10px; }

1
2
3
4
img{
  object-fit: contain;
  object-position: bottom 10px left 10px;
}

效果图:

sbf282.com 3

当然,你也可以使用calc()来定位:

img{   object-fit: contain;   object-position: calc(100% - 10px) calc(100% - 10px); }

1
2
3
4
img{
  object-fit: contain;
  object-position: calc(100% - 10px) calc(100% - 10px);
}

效果图:

sbf282.com 4

它还支持负数:

img{   object-fit: contain;   object-position: -10px calc(100% - 10px); }

1
2
3
4
img{
  object-fit: contain;
  object-position: -10px calc(100% - 10px);
}

效果图:

sbf282.com 5

总之,object-position的特性表现与backgound-position一样一样的。

兼容性:点这里

到这里,这两个属性算是讲完了,就是这么简单。

打赏支持我写出更多好文章,谢谢!

打赏作者

一、水平滚动条 和 垂直滚动条

sbf282.com 6

1.1 核心技术点
1)求滚动条的长度? 2)拖动滚动条,求内容要走多少?
滚动条的长度取决于滚动内容(滚动内容越长,滚动条越短);
内容滚动的距离和滚动条走的距离是成倍数关系。
1.2 换算公式
获取滚动条的长度:
滚动条的长度 / 盒子的长度 = 盒子的长度 / 内容的长度**
滚动条长度 = ( 盒子的宽度 / 内容的宽度) * 盒子的宽度**
拖动滚动条,求内容走的长度:
内容走的距离 / 滚动条走的距离 =(内容的长度 - 盒子的长度) / (盒子长度

  • 滚动条的长度)**
    内容走的距离 = (内容的长度 - 盒子的长度) / (盒子长度 - 滚动条的长度) * 滚动条走的距离
HTML结构
<div id="box">
         <ul id="box_content">
             <li><img src="images/img1.jpg" alt="sbf282.com 7"></li>
             <li><img src="images/img2.jpg" alt="sbf282.com 8"></li>
             <li><img src="images/img3.jpg" alt="sbf282.com 9"></li>
             <li><img src="images/img4.jpg" alt="sbf282.com 10"></li>
             <li><img src="images/img5.jpg" alt="sbf282.com 11"></li>
             <li><img src="images/img6.jpg" alt="sbf282.com 12"></li>
             <li><img src="images/img7.jpg" alt="sbf282.com 13"></li>
             <li><img src="images/img8.jpg" alt="sbf282.com 14"></li>
             <li><img src="images/img1.jpg" alt="sbf282.com 15"></li>
             <li><img src="images/img2.jpg" alt="sbf282.com 16"></li>
             <li><img src="images/img1.jpg" alt="sbf282.com 17"></li>
             <li><img src="images/img2.jpg" alt="sbf282.com 18"></li>
             <li><img src="images/img3.jpg" alt="sbf282.com 19"></li>
             <li><img src="images/img4.jpg" alt="sbf282.com 20"></li>
             <li><img src="images/img5.jpg" alt="sbf282.com 21"></li>
             <li><img src="images/img6.jpg" alt="sbf282.com 22"></li>
             <li><img src="images/img7.jpg" alt="sbf282.com 23"></li>
             <li><img src="images/img8.jpg" alt="sbf282.com 24"></li>
             <li><img src="images/img1.jpg" alt="sbf282.com 25"></li>
             <li><img src="images/img2.jpg" alt="sbf282.com 26"></li>
         </ul>
         <div id="box_bottom">

         </div>
     </div>

CSS样式
<style>
        * {
            margin: 0;
            padding: 0;
            border: 0;
            list-style-type: none;
        }

        #box{
            width: 900px;
            height: 180px;
            border: 1px solid #ccc;
            margin: 100px auto;

            position: relative;
            overflow: hidden;
        }

        #box_content{
           width: 2600px;
           height: 130px;
           position: absolute;
           top:10px;
           left:0;
        }

        #box_content li{
            float: left;
        }

        #box_bottom{
            width: 100%;
            height: 25px;
            background-color: #cccccc;

            position: absolute;
            left: 0;
            bottom: 0;
        }

        #progress{
            width: 100%;
            height: 100%;
            background-color: orangered;
            border-radius: 15px;

            position: absolute;
            cursor: pointer;
        }
    </style>

JS特效
<script>
    window.onload = function(){
        // 1. 获取需要的标签
        var box = document.getElementById('box');
        var box_content = document.getElementById('box_content');
        var box_bottom = document.getElementById('box_bottom');
        var progress = document.getElementById('progress');

        // 2. 设置滚动条的长度
        // 滚动条长度 = ( 盒子的宽度 / 滚动内容的宽度) * 盒子的宽度
        var pLength = (box.offsetWidth / box_content.offsetWidth) * box.offsetWidth;
        progress.style.width = pLength + 'px';

        // 3.监听按下事件
        progress.onmousedown = function(event){
            var event = event || window.event;

            // 3.1 获取起始位置
            var startX = event.clientX - progress.offsetLeft;

            // 3.2 移动事件
            document.onmousemove = function(event){
                var event = event || window.event;
                var endX =  event.clientX - startX;

                // 碰撞检测
                if(endX < 0){
                    endX = 0;
                }else if(endX >= box.offsetWidth - progress.offsetWidth){
                    endX = box.offsetWidth - progress.offsetWidth;
                }

                // 3.3 赋值
                progress.style.left = endX + 'px';

                // 3.4 内容走起来
                // 内容走的距离 = (内容的长度 - 盒子的长度) / (盒子长度 - 滚动条的长度) * 滚动条走的距离
                var c_length = (box_content.offsetWidth - box.offsetWidth) /(box.offsetWidth - progress.offsetWidth) * endX;
                box_content.style.left = -c_length + 'px';

                return false;
            };

            // 3.5 松开鼠标
            document.onmouseup = function(){
                document.onmousemove = null;
                document.onmouseup = null;
            };

            return false;
        }
    }
</script>

sbf282.com 27

展示图

jQuery实现瀑布流布局,jquery瀑布布局

HTML

复制代码 代码如下:

 <div id="main">
         <div class="box">
             <div class="pic">
                 <img src="images/0.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/1.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/2.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/3.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/4.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/2.jpg" alt="">
             </div>
         </div>
 </div>

CSS

复制代码 代码如下:

 * {
     margin: 0;
     padding: 0;
 }
 #main {
     position: relative;
 }
 .box {
     padding:15px 0 0 15px;
     float:left;
 }
 .pic {
     padding: 10px;
     border: 1px solid #ccc;
     border-radius: 5px;
     box-shadow: 0px 0px 5px #ccc;
     img {
         width:165px;
         height:auto;
     }
 }

JavaScript

复制代码 代码如下:

 $(window).on("load",function () {
     waterfall();
     var dataInt = { "data":[{"src":"7.jpg"},{"src":"8.jpg"},{"src":"9.jpg"},{"src":"6.jpg"}]}
     //模拟json数据;
     $(window).on("scroll",function () {
         if(checkScrollSlide){
             $.each(dataInt.data,function (key,value) {
                 var oBox=$("<div>").addClass("box").appendTo($("#main"));
                 //jQuery支持连缀,隐式迭代;
                 var oPic=$("<div>").addClass('pic').appendTo($(oBox));
                 $("<img>").attr("src","images/"+$(value).attr("src")).appendTo(oPic);
             });
             waterfall();
         }
     })
 });
 //流式布局主函数;
 function waterfall () {
     var $boxs=$("#main>div");
     //获取#main元素下的直接子元素div.box;
     //获取每一列的宽度;
     var w=$boxs.eq(0).outerWidth();
     //outerWidth()获取包含padding和border在内的宽度;
     //var w=$boxs.eq(0).width();
     //width()只能获取给元素定义的宽度;
     var cols=Math.floor($(window).width()/w);
     //获取多少列;
     $("#main").width(w*cols).css("margin","0 auto");
     //设置#main元素的宽度和居中样式;
     var hArr=[];
     //每一列高度的集合;
     $boxs.each(function (index,value) {
     //遍历每一个box元素;
     //为了找到之前所有元素的最低点,然后将本元素设置到最低点之下;
         var h=$boxs.eq(index).outerHeight();
         //每一个box元素的高,
         if (index<cols) {
             hArr[index]=h;
             //确定每列第一个元素的高度;
         } else{
             var minH=Math.min.apply(null,hArr);
             //得出列高数组中的最小高度;
             var minHIndex=$.inArray(minH,hArr);
             //$.inArray()方法得出元素(minH)在数组(hArr)中的index值;
             //console.log(value);
             //此时的value是第一行之后的所有的box元素的DOM对象!;
             $(value).css({
             //$(value):将DOM对象转换成jQuery对象,才能继续使用jQuery方法;
                 "position":"absolute",
                 "top":minH+"px",
                 "left":minHIndex*w+"px"
             });
             hArr[minHIndex]+=$boxs.eq(index).outerHeight();
             //最低高元素的高度+刚添加到最低高度下的元素的高度=新的列高;
         };
     });
     // console.log(hArr);
 };
 function checkScrollSlide () {
     var $lastBox=$("#main>div").last();
     var lastBoxDis=$lastBox.offset().top+Math.floor($lastBox.outerHeight()/2);
     var scrollTop=$(window).scrollTop();
     var documentH=$(window).height();
     return (lastBoxDis<scrollTop+documentH)?true:false;
 }

详细解释清仔细参考注释吧,我就不单独再拉出来写了。

HTML 复制代码 代码如下: div id="main" div class="box" div class="pic" img src="images/0.jpg" alt="" /div /div div class="bo...

CSS position:absolute浅析,absolute浅析

一、绝对定位的特征

绝对定位有着与浮动一样的特性,即包裹性和破坏性。

就破坏性而言,浮动仅仅破坏了元素的高度,保留了元素的宽度;而绝对定位的元素高度和宽度都没有了。

请看下面代码:

sbf282.com 28 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>绝对定位的特征</title> 6 <style> 7 .box1,.box2,.box3 { 8 background-color: orange; 9 margin-bottom: 30px; 10 } 11 12 .absolute { 13 position: absolute; 14 } 15 16 .wraper { 17 display:inline-block; 18 margin-left: 300px; 19 } 20 21 .float { 22 float: left; 23 } 24 25 .box3 { 26 position: absolute; 27 } 28 </style> 29 </head> 30 <body> 31 <div class="box1"> 32 <img src="" alt="A picture" style="width:175px;height:100px" /> 33 <img src="" alt="A picture" style="width:240px;height:180px" /> 34 <p>这是普通流中的两幅图像。</p> 35 </div> 36 <div class="box2"> 37 <img class="absolute" src="" alt="A picture" style="width:175px;height:100px" /> 38 <img src="" alt="A picture" style="width:240px;height:180px" /> 39 40 <div class="wraper"> 41 <img class="float" src="" alt="A picture" style="width:175px;height:100px" /> 42 <img src="" alt="A picture" style="width:240px;height:180px" /> 43 </div> 44 <p>左图,将第一幅图像绝对定位,其完全脱离文档流,并且覆盖在第二幅图像之上;由此看出,绝对定位的破坏性不仅让元素没有了高度,甚至没有了宽度。</p> 45 <p>右图,将第一幅图像左浮动,其虽然脱离了文档流,但是并没有覆盖在其他元素之上;浮动的破坏性仅仅破坏了元素的高度,而保留了元素的宽度。</p> 46 </div> 47 <div class="box3"> 48 <img src="" alt="A picture" style="width:175px;height:100px" /> 49 <img src="" alt="A picture" style="width:240px;height:180px" /> 50 <p>将容器绝对定位,体现其包裹性。</p> 51 </div> 52 </body> 53 </html> View Code

 

二、绝对定位的一般规则:

元素绝对定位时,会完全脱离文档流,并相对于其包含块定位。

绝对定位的包含块,是其最近的已定位的祖先元素。

如果这个祖先元素是块级元素,包含块则为该祖先元素的内边距边界,即边框。

如果这个祖先元素是行内元素,包含块则为该祖先元素的内容边界,即内容区。

如果没有已定位的祖先元素,元素的包含块定义为初始包含块。

偏移属性:top、right、bottom、left。

如果绝对定位的元素没有设置偏移属性,虽然脱离文档流,但是它的位置是原地不动的。

偏移属性可以为负值,将元素定位到包含块之外。

代码在这里:

sbf282.com 29 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>绝对定位的一般规则</title> 6 <style> 7 body { 8 background-color: #ccc; 9 } 10 .container { 11 width:500px; 12 background-color: orange; 13 margin:20px auto 50px auto; 14 padding:20px; 15 border:2px solid red; 16 } 17 18 .box2 img,.box3 img, 19 .box4 img,.box5 img { 20 position: absolute; 21 } 22 23 .box3 img,.box4 img { 24 left:0; 25 bottom:0; 26 } 27 28 .box5 img { 29 left: -30px; 30 bottom: -50px; 31 } 32 33 .block { 34 position :relative; 35 height: 200px; 36 } 37 </style> 38 </head> 39 <body> 40 <div class="container"> 41 <div class="box1"> 42 <p>元素绝对定位时,会完全脱离文档流,并相对于其包含块定位。绝对定位的包含块,是其最近的已定位的祖先元素。</p> 43 <img src="" alt="A picture" style="width:175px;height:100px" /> 44 <ul> 45 <li>如果这个祖先元素是块级元素,包含块则为该祖先元素的内边距边界,即边框。</li> 46 <li>如果这个祖先元素是行内元素,包含块则为该祖先元素的内容边界,即内容区。</li> 47 <li>如果没有已定位的祖先元素,元素的包含块定义为初始包含块(一个视窗大小的矩形)。</li> 48 </ul> 49 </div><!--关闭box1--> 50 </div><!--关闭container--> 51 <div class="container"> 52 <div class="box2"> 53 <p>不管有没有已经定位的祖先元素,只要没有偏移量,绝对定位之后,原地不动,脱离文档流。</p> 54 <p>下面这个已经绝对定位的图像原地没动,但是已经脱离了文档流。</p> 55 <img src="" alt="A picture" style="width:175px;height:100px" /> 56 </div><!--关闭box2--> 57 </div><!--关闭container--> 58 <div class="container"> 59 <div class="box3"> 60 <p>没有已经定位的祖先元素,有偏移量,绝对定位之后,以初始包含块(一个视窗大小的矩形)为基准进行偏移。</p> 61 <p>当偏移量为left:0; buttom:0时,图像水平偏移到了初始包含块左下角(打开网页最开始的那一个视窗的左下角)。</p> 62 <img src="" alt="A picture" style="width:175px;height:100px" /> 63 </div><!--关闭box3--> 64 </div><!--关闭container--> 65 <div class="container block"> 66 <div class="box4"> 67 <p>有已经定位的祖先元素,有偏移量,绝对定位之后,以已经定位的祖先元素为基准进行偏移。</p> 68 <p>此处已经定位的祖先元素为这个图像的容器div元素,偏移量为left:0; bottom:0时,图像到了这个容器的左下角(以边框为界)。</p> 69 <img src="" alt="A picture" style="width:175px;height:100px" /> 70 </div><!--关闭box4--> 71 </div><!--关闭container--> 72 <div class="container block"> 73 <div class="box5"> 74 <p>有已经定位的祖先元素,有偏移量,绝对定位之后,以已经定位的祖先元素为基准进行偏移。</p> 75 <p>此处已经定位的祖先元素为这个图像的容器div元素,偏移量为left:-30px; bottom:-50px时,图像到了这个容器之外(以边框为界)。</p> 76 <img src="" alt="A picture" style="width:175px;height:100px" /> 77 </div><!--关闭box5--> 78 </div><!--关闭container--> 79 </body> 80 </html> View Code

 

 三、用margin调整绝对定位元素的位置

绝对定位的元素,除了可以使用top、right、bottom、left进行偏移之外,还能够通过margin值进行精确定位,而且自适应性更好。

示例:

sbf282.com 30 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>用margin调整绝对定位元素的位置</title> 6 <style> 7 .box1,.box2,.box3 { 8 display: inline-block; 9 margin-right: 150px; 10 border:1px solid blue; 11 } 12 13 span { 14 background-color: red; 15 } 16 17 .box2 span,.box3 span { 18 position: absolute; 19 } 20 21 .meng { 22 margin-left: -3em; 23 } 24 25 .box4 { 26 border:1px solid red; 27 width: 500px; 28 margin: 50px auto 0 auto; 29 padding:20px; 30 } 31 32 li { 33 margin-bottom: 20px; 34 } 35 </style> 36 </head> 37 <body> 38 <div class="box1"> 39 <span>卡哇伊</span> 40 <img src="" style="width:200px;height:300px" /> 41 <span>萌萌哒</span> 42 </div> 43 <div class="box2"> 44 <span>卡哇伊</span> 45 <img src="" style="width:200px;height:300px" /> 46 <span>萌萌哒</span> 47 </div> 48 <div class="box3"> 49 <span>卡哇伊</span> 50 <img src="" style="width:200px;height:300px" /> 51 <span class="meng">萌萌哒</span> 52 </div> 53 <div class="box4"> 54 <ol> 55 <li>第一幅图,最开始的样子。</li> 56 <li>第二幅图,两个标签绝对定位,但是不指定任何偏移量。</li> 57 <li>第三幅图,用margin负值调整“萌萌哒”的位置,完成。</li> 58 </ol> 59 </div> 60 </body> 61 </html> View Code

放弃偏移属性而改用margin来调整绝对定位元素,其原理在于:

绝对定位的元素,在不设置偏移量的时候,它虽然完全脱离了文档流,但它还在原来的位置。

利用偏移属性进行精确定位,其具体位置是取决于绝对定位元素的包含块,不同的包含块将会有完全不一样的定位结果。

而利用margin进行精确定位,不依赖于任何其他东西,更加可控。

在写这篇博文的时候,absolute让我给relative带话,它说:“relative,你给我滚好吗,我这辈子都不想看到你!”

预知后事如何,请移步relative篇,谢谢!

 

四、绝对定位与整体布局

如何用绝对定位来对页面进行整体布局?

简单粗暴,不学就浪费啦!!!

sbf282.com 31 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>绝对定位与整体页面布局</title> 6 <style> 7 * { 8 margin: 0; 9 }/*重置所有margin为0,这一步极其重要,否则布局必乱。*/ 10 11 html,body,.page { 12 width: 100%; 13 height: 100%; 14 overflow: hidden; 15 } 16 17 .page { 18 position: absolute; 19 top: 0; 20 right: 0; 21 bottom: 0; 22 left: 0; 23 background-color: #ccc; 24 } 25 26 .header { 27 position: absolute; 28 height: 50px; 29 left: 0; 30 right: 0; 31 background-color: purple; 32 padding: 0 5px; 33 z-index: 1; 34 } 35 36 .header>h1 { 37 line-height: 50px; 38 text-align: center; 39 } 40 41 .aside { 42 position: absolute; 43 top: 50px; 44 bottom: 50px; 45 left: 0; 46 width: 100px; 47 background-color: orange; 48 } 49 50 .footer { 51 position: absolute; 52 right: 0; 53 bottom: 0; 54 left: 0; 55 height: 50px; 56 background-color: purple; 57 } 58 59 .footer>h1 { 60 text-align: center; 61 line-height: 50px; 62 } 63 64 .content { 65 position: absolute; 66 top: 50px; 67 right: 0; 68 bottom: 50px; 69 left: 100px; 70 background-color: cyan; 71 overflow: auto; 72 } 73 74 .content h1 { 75 margin-top: 100px; 76 margin-left: 50px; 77 } 78 79 .content li { 80 margin-left: 100px; 81 margin-top: 80px; 82 font-size: 24px; 83 line-height: 1.5; 84 } 85 86 ol { 87 margin-bottom: 80px; 88 } 89 </style> 90 </head> 91 <body> 92 <div class="page"> 93 <div class="header"> 94 <h1>Header</h1> 95 </div> 96 <div class="aside"> 97 <h1>Aside</h1> 98 </div> 99 <div class="content"> 100 <h1>实现原理</h1> 101 <ol> 102 <li>创建一个div.page,绝对定位,铺满全屏。</li> 103 <li>创建一个div.header,绝对定位,设定高度。</li> 104 <li>创建一个div.aside,绝对定位,设定宽度。</li> 105 <li>创建一个div.footer,绝对定位,设定高度。</li> 106 <li>创建一个div.content,绝对定位,根据周围div的宽高设定它的宽高;<br /> 107 以div.content元素取代原body元素,所有的页面内容都放在这里面。</li> 108 </ol> 109 </div> 110 <div class="footer"> 111 <h1>Footer</h1> 112 </div> 113 </div> 114 </body> 115 </html> View Code

 

position:absolute浅析,absolute浅析 一、绝对定位的特征 绝对定位有着与浮动一样的特性,即包裹性和破坏性。 就破坏性而言,浮动仅仅破...

HTML(注意包裹关系,方便js调用)

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

sbf282.com 32 sbf282.com 33

1 赞 收藏 评论

二、内置对象document

  • Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问

  • Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问:

document.head(获取头部)
document.body(获取身体)
document.title (获取标题)
document.documentElement(获取整个html)

  • Document.compatMode:
    BackCompat:标准兼容模式关闭
  • 浏览器宽度:document.body.clientWidth

复制代码 代码如下:

关于作者:TGCode

sbf282.com 34

路途虽远,无所畏 个人主页 · 我的文章 · 9 ·    

sbf282.com 35

CSS1Compat:标准兼容模式开启

  • 浏览器宽度:document.documentElement.clientWidth

  • BackCompat 对应 quirks mode(怪异模式) , CSS1Compat 对应 strict mode (严格模式) :

早期的浏览器Netscape 4和Explorer 4对css进行解析时,并未遵守W3C标准,这时的解析方式就被我们称之为quirks mode(怪异模式),但随着W3C的标准越来越重要,众多的浏览器开始依照W3C标准解析CSS,仿照W3C标准解析CSS的模式我们叫做strict mode(严格模式) 。

 <body>
     <div id="main">
         <div class="box">
             <div class="pic">
                 <img src="images/0.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/1.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/2.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/3.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/4.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/2.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/3.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/4.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/5.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/6.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/7.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/3.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/4.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/5.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/3.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/4.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/5.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/6.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/7.jpg" alt="">
             </div>
         </div>
         <div class="box">
             <div class="pic">
                 <img src="images/3.jpg" alt="">
             </div>
         </div>
     </div>
 </body>

本文由胜博发-前端发布,转载请注明来源:JavaScript(自己理解的注解sbf282.com:),'廊坊分行