前端开发笔记(3)css(中)

上一篇中我们学习了html的标准文档流,下面我们先来看看如何脱离标准流。

脱离标准流

css中一共有三种方法脱离标准流

  • 浮动
  • 绝对定位
  • 固定定位

浮动

我们要搞清楚什么是浮动,先来看一个标准文档流的例子

<style type="text/css">
    div{
        width:100px;
        height:100px;
        margin:10px;
        border:1px solid red;
    }
</style>
<body>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</body>

浏览器执行效果:

会发现标准文档流这4个div不能并排,下面我们设置浮动让他们可以并排。

<style type="text/css">
        div{
            width:100px;
            height:100px;
            margin:10px;
            border:1px solid red;

            float:left;  /* 设置浮动(向左浮动) */
        }
    </style>

浏览器运行结果:

浮动的特点:

  • 浮动的元素脱离标准流。(这个已经在上面看到了)
  • 浮动的元素相互贴靠。

    我们去掉上面样式中的margin看看是否使靠帖的

    div{
        width:100px;
        height:100px;
        /* margin:10px; */
        border:1px solid red;
        float:left;  /* 设置浮动(向左浮动) */
    }

  • 浮动的元素有“字围”效果。
    <head>
    <style type="text/css">
        img{
            float:left;
        }
    </style>
    </head>
    <body>
    <img src="img1.jpg"/>
    <p>
        这里是文字...(此处省略1000字)
    </p>
    </body>

    浏览器执行结果:

绝对定位

演示一个绝对定位脱离标准流的例子,下面详细介绍几种定位。

<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            border: 1px solid red;
            width:100px;
            height:100px;
            position:absolute;  /* 绝对定位 */
            top:20;
        }

        .div1{
            left:20;

        }

        .div2{
            left:120px;
        }

        .div3{
            left:230px;
        }

        .div4{
            left:340px;
        }
    </style>
</head>
<body>
    <div class="div1"></div>
    <div class="div2"></div>
    <div class="div3"></div>
    <div class="div4"></div>
</body>

固定定位

将上面例子中的position值改为fixed后效果和上面一样

<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            border: 1px solid red;
            width:100px;
            height:100px;
            position:fixed;  /* 固定定位 */
            top:20;
        }

        .div1{
            left:20;

        }

        .div2{
            left:120px;
        }

        .div3{
            left:230px;
        }

        .div4{
            left:340px;
        }
    </style>
</head>
<body>
    <div class="div1"></div>
    <div class="div2"></div>
    <div class="div3"></div>
    <div class="div4"></div>
</body>

浮动的清除

清除浮动的原因

先来看一个小案例

<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        li{
            float:left;
            background-color:yellow;
            padding:20px;
        }
    </style>
</head>
<body>
    <div>
         <ul>
             <li>HTML</li>
             <li>CSS</li>
             <li>JS</li>
             <li>HTML5</li>
             <li>APP</li>
         </ul>
  </div>

  <div>
         <ul>
             <li>数据结构</li>
             <li>设计模式</li>
             <li>操作系统</li>
         </ul>
   </div>

</body>

我们会发现上面的第二个div中的li元素会去贴靠第一个div中的最后一个元素。原因是因为div没有设置高度,那么此时你可能会问了,给div设置一个高度不就可以了,为什么要想办法去清除浮动呢?有的小朋友可能就问了,刚刚不是学习了怎么浮动,浮动能脱离标准文档流,现在怎么又要清除浮动了?

一般我们给容器不去设置固定的高度,而是由它的内容的高度自适应,这样才能适配到更多浏览器并且容易维护和修改。这只是清除浮动的一个原因,总之有的时候我们并不希望我们的块标签跟随着另一个标签,此时就需要清除浮动。

给父标签添加高度

给上面的案例中的div添加高度

div{
    height:50px;
}

浏览器执行结果:

这个方法并不为一种很好的清除浮动的方法,如果确实需要设置高度可以这样做。

clear:both;属性清除

将上面的div样式改为clear:both;

div{
    clear:both;
}

浏览器执行结果和上面一致,但是这种方法有一个不好的地方margin在一定程度上会存在失效。

div{
    clear:both;
    margin:50px;
}

会发现上面设置的margin没有效果

隔墙法

在两个div中间放置一个clear:both;样式的div

<style type="text/css">
        .splite{
            clear:both;
        }
        li{
            float:left;
            background-color:yellow;
            padding:20px;

        }
</style>
<body>
    <div>
         <ul>
             <li>HTML</li>
             <li>CSS</li>
             <li>JS</li>
             <li>HTML5</li>
             <li>APP</li>
         </ul>
    </div>
    <div class="splite"</div>  <!-- 这是一堵墙 -->
    <div>
         <ul>
             <li>数据结构</li>
             <li>设计模式</li>
             <li>操作系统</li>
         </ul>
   </div>

内墙法

内墙法和上面的隔墙法很相似,是将“这堵墙”放到了第一个div内部

<body>
    <div>
         <ul>
             <li>HTML</li>
             <li>CSS</li>
             <li>JS</li>
             <li>HTML5</li>
             <li>APP</li>
         </ul>
         <div class="splite"</div>  <!-- 这是一堵墙 -->
    </div>

    <div>
         <ul>
             <li>数据结构</li>
             <li>设计模式</li>
             <li>操作系统</li>
         </ul>
   </div>

overflow:hidden;属性清除

overflow:hidden;的本意是隐藏超出部分的内容,但是实际开发中发现这个属性可以巧妙的清除浮动。

<style type="text/css">
    div{
        overflow: hidden;
    }
    li{
        float:left;
        background-color:yellow;
        padding:20px;

    }
</style>
<body>
    <div>
         <ul>
             <li>HTML</li>
             <li>CSS</li>
             <li>JS</li>
             <li>HTML5</li>
             <li>APP</li>
         </ul>
    </div>

    <div>
         <ul>
             <li>数据结构</li>
             <li>设计模式</li>
             <li>操作系统</li>
         </ul>
   </div>

</body>

IE6不兼容overflow:hidden;清除浮动,解决办法添加一个属性zoom:1;

overflow: hidden;
_zoom:1;
时间: 2024-10-24 19:31:00

前端开发笔记(3)css(中)的相关文章

Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行

  H1/H2/H3/H4标题标签常常使用在一个网页中唯一标题.重要栏目.重要标题等情形下. H1在一个网页中最好只使用一次,如对一个网页唯一标题使用.H2.H3.H4标签则可以在一个网页中多次出现,但必要随意添加或添加过度. 在Web前端开发中,经常要使用H1标签对关键字进行优化,可是如果是一行文字中的某个词加上了H1标记,就会换行.可以使用下面的方法,H标签就不会强制换行了.Css控制为一行文字中某个字加上<h2>标签不换行,display:inline; 解释为:内联对象的默认值.用该值

web前端开发笔记(2)

web前端开发笔记(1) 一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必须闭合. 页面中不要用 进行缩进,如需缩进,用css控制. html标签使用必须语义化. 要为img标签填写alt和title属性. 二.HTML静态页面出现中文乱码如何解决? 引入<meta charset="UTF-8"> 三.通常情况下块属性标签和

前端开发笔记(1)html基础

HTML介绍 HTML是HyperTextMarkupLanguage超文本标记语言的缩写 HTML是标记语意的语言 编辑器 任何纯文本编辑器都能够编辑html,比如记事本,editplus,notepad++ 比较有名的专门制作网页工具有:DreamWeaver (Adobe公司的产品,过时了,不是一个好的代码编辑器) Sublime (高效率的程序书写工具) WebStorm (更高级的项目级别编程工具) 文档头声明 任何一个标准的HTML页面,第一行一定是一个以 我们现在学习的是HTML4

Web前端开发笔记整理

web前端开发笔记: 1.web前端之html_day1 2.web前端之html_day2 3.web前端之css_day1

前端开发笔记(2)css基础(上)

CSS介绍 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化.CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力. <style type="text/css"> span{ color:red;

15款不容错过的前端开发Javascript和css类库 - 2017版本~

前端的JS和CSS类库日新月异, 在今天这篇介绍中,我们将精挑细选15款超棒的JS/CSS类库, 希望大家在开发过程中会觉得有帮助~ Core UI 基于Bootstrap4的一套UI类库, CoreUI是一套admin的管理模板,提供了高定制化的解决方案来创建控制模板和平台. 这有几种不同的版本帮助你快速的整合最流行的框架,比如, AngularJS, React.jS,Vue.jS等等 React Trend 来自Unsplash的一个react版本的组件,用来方便的创建线图,可以方便的展示

豆瓣网前端开发规范之-css开发规范

1. CSS浏览器支持标准 WinXP Win7 OS X IE9 C C IE8 A A IE7 A A IE6 A A Chrome7 C C C Chrome6 A A A Chrome3 B B B Firefox4 C C C Firefox3.6 A A A Firefox3.5 C C Firefox3 C C Safari B B B Opera C C C (注:根据2010年11月10日数据整理) A级-交互和视觉完全符全设计的要求 B级-视觉上允许有所差异,不破坏页面整体效

【css笔记】css中的盒模型和三种定位机制(固定定位,绝对定位,浮动)

html页面上的元素都可以看成是框组成的,框通过三种定位机制排列在一起就过程了我们看到的页面.而框就是盒模型. 盒模型 1.页面上的每个元素可以看成一个矩形框,每个框由元素的内容,内边距,边框和外边距组成. 2.如果在元素上添加背景,则背景是边框, 内边距和内容组成的区域. 3.在css中width和height指的是内容区域的宽度和高度.增加内边距,边框和外边距不会影响内容区域的尺寸,但会增加元素框的总尺寸.即width=element 注意:ie的盒模型中,width指的是内容,内边距,和边

〖前端开发〗HTML/CSS基础知识学习笔记

经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> <body>...</body> </html> html是根标签 head定义文档头部,包含: title, script, style, link, meta body是网页主要内容,包含:h1,h2-h6, p, a, img 2. 认识head标签: <head