[19/06/07-星期五] CSS基础_布局&定位

一、固定布局(不适应设备的浏览器的变化)

  

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>简单布局</title>
        <style type="text/css">
            /*清除默认样式*/
            *{
                margin: 0;
                padding: 0;
            }
            .header{
                width: 1000px;
                height: 100px;
                background-color: yellowgreen;
                margin: 0 auto;
            }
            .content{
                width: 1000px;
                height: 400px;
                background-color: orange;
                margin: 10px auto;
            }
                .left{
                    width: 200px;
                    height: 100%;
                    background-color: skyblue;
                    /*设置向左浮动*/
                    float: left;
                        }
                .center{
                    width: 580px;
                    height: 100%;
                    background-color: royalblue;
                    float: left;
                    margin: 0 10px;

                }
                .right{
                    width: 200px;
                    height: 100%;
                    background-color: cyan;
                    float: left;
                }
            .footer{
                width: 1000px;
                height: 100px;
                background-color: salmon;
                margin: 0 auto;
            }

        </style>
    </head>
    <body>
        <!--头部信息-->
        <div class="header"> </div>

        <!--主体内容-->
        <div class="content">
            <!--左中右3个div-->
            <div class="left"> </div>
            <div class="center"> </div>
            <div class="right"> </div>
        </div>

        <!--底部信息-->
        <div class="footer"> </div>

    </body>
</html>

扩展:高度塌陷

  在文档流中,父元素的高度默认被子元素撑开,也就是子元素多高,父元素就多高。

  在浮动流中,当为子元素设置浮动以后,子元素会完全脱离文档流,此时会导致子元素无法撑起父元素的高度,即会导致父元素的塌陷。由于父元素的高度塌陷,所以

会导致父元素下边的元素向上移动,这样页面会很混乱。所以一定要避免高度塌陷。

解决方案1:可以将父元素的高度写死,但是这样父元素的高度不能自动适应子元素高度的改变。所以这种方案不推荐。

解决方案2:

  根据W3C的标准,在页面中的元素都有一个隐含的属性叫Block Formatting Context 简称BFC,该属性可以打开或关闭,默认是关闭的。

  当设置开启之后,元素会具有如下的特性:

    1、父元素的垂直外边距不会和子元素重叠。

    2、开启BFC的元素不会被浮动元素所覆盖;

    3、开启BFC的元素可以包含浮动的子元素。

  如何开启?(只能间接开启)

    1、设置元素浮动(即让父元素也浮动起来):可以撑开高度,但是可以导致父元素的宽度丢失,而且也会导致下边元素上移

    2、设置元素的绝对定位:跟方案1一样效果

    3、设置元素为inline-block:可以解决问题,但是也是导致父元素的宽度丢失。

    4、将元素的overflow设置为一个非visible的值。一般设置为auto或hidden是最好的方案,推荐设置为hidden,副作用最小。

注意:IE6及以下不支持BFC,它具有一个隐含属性叫haslayout,作用和BFC类似,可以开启这个。

    开启方式:直接将元素的zoom(放大)设置为1即可,副作用最小。zoom: 1 表示不放大元素,可以使用这种方式。只在IE中支持,其他不支持。

解决方案3:

前言:如何清除浮动的影响?

    使用clear来清除其他浮动元素(上边元素)对当前元素(下边元素)的影响(即下边往上移动),其他元素该浮动还浮动,下边的不动即在原来的位置。

    none:默认值,不清除浮动

    left:清除左侧浮动

    right:清除右侧浮动

    both:清除两侧浮动元素对当前元素的影响,即清除对他影响最大的元素的浮动

  可以在高度塌陷的父元素后边,添加一个空白的div,由于这个div没有浮动,可以撑开父元素的高度,然后再对它清除浮动,这样可以通过这个空白的div撑开高度,

基本没有副作用。使用这种方式虽然可以解决问题,但是会在页面中添加多余的结构。

   通过after伪类,选中父元素的后边添加一个空白的块元素,然后清除浮动,原理跟div一样,效果一样,而且不会添加多余的div,最推荐的方式。在IE6不支持,所以

还需要使用haslayout来处理。

二、定位

  指的是将指定的元素摆放在页面的任意位置。通过position属性来设置

  可选值:  static,默认值,元素没有开启定位

        relative,元素开启相对定位

        absolute,元素开启绝对定位

        fixed,元素开启固定定位(也是绝对定位的一种)

  当开启定位时,可以通过left、right、top、bottom来设置(是相对于自身定位位置的)左侧、右侧、上侧、下侧设置偏移量。通常只使用2个偏移量就可以对元素

定位。一般选择水平和垂直方向的偏移量来为元素定位。相对于自身定位的。

  1、相对定位(relative)

       当开启相对定位但是不设置偏移量时,元素不会产生任何变化。

       相对定位的元素不会脱离文档流。

       相对定位会使元素提升一个层级。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>相对定位</title>
        <style type="text/css">
            .box1{
                width: 200px;
                height: 200px;
                background-color: red;
            }
            .box2{
                width: 200px;
                height: 200px;
                background-color: yellow;
                position: relative;
                left: 100px;/*开启左偏移,是相对于自身所在位置*/
            }
            .box3{
                width: 200px;
                height: 200px;
                background-color: yellowgreen;
            }
        </style>
    </head>
    <body>
        <!--div.box$*3 快捷键 创建3个div名字叫box1-3 -->
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </body>
</html>

  2、绝对定位(absolute)

       绝对定位会使元素脱离文档流。

       开启绝对定位如果不设置偏移量,元素的位置不会发生变化。

       绝对定位是相对于窗口的左上角,即浏览器窗口的左上角坐标是(0,0),是相对于最左上角定位的。准确说是相对于离他最近的开启了定位的祖先

 元素来定位的。如果祖先没有开启定位,是相对于浏览器窗口来定位,一般开启子元素的定位都会开启父元素的定位。

       绝对定位会提升一个层级,会改变元素的性质。    

  3、固定定位(fixed)

      固定定位也是一种绝对定位,是种特殊的绝对定位。IE6不支持。

      不同点:永远都会相对于浏览器窗口进行定位。固定定位会固定在浏览器的位置不会随着滚动条向下的移动而移动,如网站的广告,二维码。

  

原文地址:https://www.cnblogs.com/ID-qingxin/p/11080414.html

时间: 2024-10-13 16:49:26

[19/06/07-星期五] CSS基础_布局&定位的相关文章

[19/06/09-星期日] CSS基础_示例

一.图片格式&Hack(尽量不要使用) IE6对图片png-24的透明效果不支持,IE6中背景会发灰,可以使用png-8来代替.但是使用png-8代替之后清晰度会有所下降. 使用js来解决该问题,但是需要引入一个外部的js文件. 有些代码只需要在指定浏览器中(主要指IE)执行,可以使用CSS Hack 来解决. 条件Hack,如<!-- [if IE]>  语句 <![endif]-->  只对IE浏览器有效,其他的浏览器会把它当成注释. IE10以下的支持这种模式. 在样

css 三种布局定位

css有三种布局定位 1.流式布局 这是默认的布局方式,也叫标准文档流.页面标签元素自左向右,自上而下排布.行内元素自左向右,块级元素自上而下. 2.浮动布局--float属性 3个属性值:left,right,none 特点:元素会左移或者右移,知道碰到容器为止 设置浮动属性的元素依然处在标准文档流中,会对相邻元素产生影响,特指紧邻后面的元素 个人怀疑,是block属性变成了inline属性,留待验证 (下班了,第三中布局明天再说)

(16/06/10) DIV+CSS网页标准化布局 DIV+CSS的兼容性问题小结。

1.兼容性问题的产生:个别浏览器的开发商对一些CSS属性的解析没有按W3C的标准设计. 一个好的网站布局需要在所有的浏览器上呈现相同的界面,即使不能完全一致也要大致相同.浏览器进行页面布局调试将其分为IE和非IE两种.主要原因是因为微软公司的IE浏览器没有按W3C的标准设计,而非IE浏览器几乎是符合W3C标准的.目前IE浏览器占有很大的市场份额,IE5使用人群很少,基本不用考虑,一般IE浏览器兼容性只针对IE6,IE7,IE8就可以了,IE的新版本向标准化迈进.非IE浏览器以Firefox浏览器

CSS基础和布局复习

table布局 div布局优势   浏览器支持完善   表现和结构分离   样式设计控制功能强大   可以继承,层叠处理 Transitional // 松散过度型 Strict //严格型 Frameset //比较不常用的,使用框架使用这种模式 XHTML中的所有标签都是要闭合的比如 "<input/>" 但是在HTML中就不必这样 "<input>"即可  CSS中的数据单位: px : 像素 em : 当前对象体内的字体尺寸(好像英文

一、HTML和CSS基础--网页布局--实践

案例一:导航菜单的制作 垂直菜单 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css"> * { margin: 0; padding: 0; font-size:14px; } ul{ list-st

前端开发:css基础知识之盒模型以及浮动布局。

前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把它写到我的博客中,想知道自己过来翻就好啦 ^_^  下面楼主把当前的自己对css的基础认知一一给大家道来...... 盒模型 谈到盒模型,有经验的小伙伴一定滚瓜烂熟,无非就是 内容(content).填充(padding).边框(border).边界(margin): 这些属性我们可以把它转移到我们

css基础 引用方式 标签选择器 优先级 各式布局

今天讲的css基础,了解了css即层叠式表,是美化网页,控制页面的样式. 样式表引进网页的3种方式1内联式,语法例子:<div style="width: 100px;height: 50px;background: #E91115"> </div>' 2内嵌式   语法例子  ( head里面)     div{height: 100px;width: 100px;background: #EF0E12} 3外部样式表 语法例子 ( head里面)   <

DIV+CSS中让布局居中_背景图片居中_文字内容居中

DIV+CSS中让布局居中_背景图片居中_文字内容居中

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开