标签定位

相对定位

相对定位是用来微调元素位置的,让元素相对于原来的位置进行调整。

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  3. <title>Document</title>
  4. <style type="text/css">
  5. div{
  6. width:100px;
  7. height:100px;
  8. }
  9. .box1{
  10. background-color:green;
  11. }
  12. .box2{
  13. background-color:blue;
  14. position:relative;
  15. left:30px;
  16. top:30px;
  17. }
  18. .box3{
  19. background-color:red;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="box1"></div>
  25. <div class="box2"></div>
  26. <div class="box3"></div>
  27. </body>

绝对定位

绝对定位比相对定位更灵活

  1. 绝对定位脱离标准流:绝对定位的盒子,是脱离标准文档流的。所以,所有的标准文档流的性质,绝对定位之后都不遵守了。绝对定位之后,标签就不区分所谓的行内元素、块级元素了,不需要display:block;就可以设置宽、高了。
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  3. <title>Document</title>
  4. <style type="text/css">
  5. .box1{
  6. width:100px;
  7. height:100px;
  8. background-color:green;
  9. }
  10. span{
  11. width:100px;
  12. height:100px;
  13. background-color:red;
  14. position:absolute;
  15. left: 50px;
  16. top: 50px;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div class="box1"></div>
  22. <span>行内元素</span>
  23. </body>



2. 绝对定位的参考点,如果用top描述,那么定位参考点就是页面的左上角,而不是浏览器的左上角。



上面图中浏览器高600px, 窗口已经卷动了200px,现在有一个div标签,有下面样式

  1. width:100px;
  2. height:100px;
  3. border:1px solid black;
  4. position:absolute;
  5. bottom:200px;
  6. left:200px;

请在图中画出盒子的位置并标出必要的尺寸。

  1. 以盒子为参考点:一个绝对定位的元素,如果父辈元素中出现了也定位了的元素,那么将以父辈这个元素,为参考点。
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  3. <title>Document</title>
  4. <style type="text/css">
  5. .box1{
  6. width:200px;
  7. height:200px;
  8. border:1px solid red;
  9. position:relative;
  10. left:50px;
  11. top:50px;
  12. }
  13. .box2{
  14. width:100px;
  15. height:100px;
  16. border:1px solid green;
  17. }
  18. span{
  19. width:100px;
  20. height:100px;
  21. background-color:red;
  22. position:absolute;
  23. left: 50px;
  24. top: 50px;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <div class="box1">
  30. <div class="box2">
  31. <span>行内元素</span>
  32. </div>
  33. </div>
  34. </body>



4. 绝对定位的儿子,无视参考的那个盒子的padding。

5. 绝对定位的盒子居中:绝对定位之后,所有标准流的规则,都不适用了。所以margin:0 auto;失效。

  1. width: 600px;
  2. height: 60px;
  3. position: absolute;
  4. left: 50%;
  5. top: 0;
  6. margin-left: -300px; /* 宽度的一半 */

固定定位

固定定位,就是相对浏览器窗口定位。页面如何滚动,这个盒子显示的位置不变。固定定位是脱离标准文档流的。

margin属性

margin塌陷现象

标准文档流中,竖直方向的margin不叠加,以较大的为准。

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  3. <title>Document</title>
  4. <style type="text/css">
  5. .box1{
  6. width:100px;
  7. height:100px;
  8. margin-bottom:50px; /* 注意这一行 */
  9. background-color:red;
  10. }
  11. .box2{
  12. width:100px;
  13. height:100px;
  14. margin-top:30px; /* 注意这一行 */
  15. background-color:green;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div class="box1"></div>
  21. <div class="box2"></div>
  22. </body>



上图中两个div分别设置了margin为向上30px向下50px,实际上间距只有50px.如果两个div脱离标准流就会是80px.

使用margin盒子居中

margin的值可以为auto,表示自动。当left、right两个方向,都是auto的时候,盒子居中了:

  1. margin-left: auto;
  2. margin-right: auto;

简写为

  1. margin:0 auto;
  1. 使用margin:0 auto; 的盒子,必须有width,有明确的width
  2. 只有标准流的盒子,才能使用margin:0 auto; 居中。

    也就是说,当一个盒子浮动了、绝对定位了、固定定位了,都不能使用margin:0 auto;
  3. margin:0 auto;是在居中盒子,不是居中文本。

    文本的居中,要使用text-align:center;

善用父亲的padding而不是儿子的margin

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  3. <title>Document</title>
  4. <style type="text/css">
  5. .box1{
  6. width:200px;
  7. height:200px;
  8. margin-bottom:50px;
  9. background-color:red;
  10. }
  11. .box2{
  12. width:100px;
  13. height:100px;
  14. margin-top:30px;
  15. background-color:green;
  16. margin-top:50px;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div class="box1">
  22. <div class="box2"></div>
  23. </div>
  24. </body>

上面代码你会发现如果父亲没有border,那么儿子的margin实际上踹的是“流”,踹的是这“行”。所以,父亲整体也掉下来了



设置border后

  1. .box1{
  2. width:200px;
  3. height:200px;
  4. margin-bottom:50px;
  5. background-color:red;
  6. border:1px solid black;
  7. }
  8. .box2{
  9. width:100px;
  10. height:100px;
  11. margin-top:30px;
  12. background-color:green;
  13. margin-top:50px;
  14. }



margin这个属性,本质上描述的是兄弟和兄弟之间的距离; 最好不要用这个marign表达父子之间的距离。

margin的IE6兼容问题

  1. IE6双倍margin bug

    当出现连续浮动的元素,携带和浮动方向相同的margin时,队首的元素,会双倍marign。

    解决方法:使浮动的方向和margin的方向,相反。

  2. IE6 3px bug

    ie6中margin-right:10px;你就会发现实际上距离右边是13px,这恶只能通过使用容器div的padding来设置解决。

background系列属性

background-color

设置背景颜色,建议使用第二种

  1. background-color: rgb(0,255,0);
  2. background-color: #ff0000;

background-image

  1. background-image:url(images/test.jpg);

background-repeat

background-position

“css精灵”,英语css sprite,所以也叫做“css雪碧”技术。是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分。css精灵有什么优点,就是减少了http请求。比如4张小图片,原本需要4个http请求。但是用了css精灵,小图片变为了一张图,http请求只有1个了。

  1. background-position: 描述左右的词儿 描述上下的词儿;
  2. 描述左右的词儿: left centerright
  3. 描述上下的词儿: top centerbottom

background-attachment

  1. background-attachment:fixed;

背景就会被固定住,不会被滚动条滚走。

background综合属性

  1. background:red url(1.jpg) no-repeat 100px 100px fixed;

等价于

  1. background-color:red;
  2. background-image:url(1.jpg);
  3. background-repeat:no-repeat;
  4. background-position:100px 100px;
  5. background-attachment:fixed;

行高和字号

文字,是在自己的行里面居中的。比如,现在文字字号14px,行高是24px。那么:



为了严格保证字在行里面居中,我们的工程师有一个约定: 行高、字号,一般都是偶数。这样,它们的差,就是偶数,就能够被2整除。

单行文本垂直居中

  1. p{
  2. height:60px;
  3. line-height:60px;
  4. }

只适用于单行文本垂直居中,不适用于多行。如果想让多行文本垂直居中,需要设置盒子的padding:

font属性

使用font属性,能够将字号、行高、字体,能够一起设置。

  1. font: 14px/24px “宋体”;

为了防止用户电脑里面,没有微软雅黑这个字体。就要用英语的逗号,隔开备选字体。我们要将英语字体,放在最前面,这样所有的中文,就不能匹配英语字体,就自动的变为后面的中文字体。

  1. font-family: "Times New Roman","微软雅黑","宋体";

行高可以用百分比,表示字号的百分之多少。一般来说,都是大于100%的,因为行高一定要大于字号。

  1. font:12px/200% “宋体”

超链接美化

伪类:同一个标签,根据用户的某种状态不同,有不同的样式。这就叫做“伪类”。

a标签有4种伪类

  1. a:link{ /* 从未访问过 */
  2. color:red;
  3. }
  4. a:visited{ /* 访问过 */
  5. color:orange;
  6. }
  7. a:hover{ /* 鼠标悬停 */
  8. color:green;
  9. }
  10. a:active{ /* 鼠标点击未离开 */
  11. color:black;
  12. }

z-index属性

只有定位的盒子里面才有z-index

  • z-index值表示谁压着谁。数值大的压盖住数值小的。

  • 只有定位了的元素,才能有z-index值。也就是说,不管相对定位、绝对定位、固定定位,都可以使用z-index值。而浮动的东西不能用。

  • z-index值没有单位,就是一个正整数。默认的z-index值是0。

  • 如果大家都没有z-index值,或者z-index值一样,那么谁写在HTML后面,谁在上面能压住别人。定位了的元素,永远能够压住没有定位的元素。

前端开发笔记(4)css基础(下)的更多相关文章

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

    经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...

  2. 从零开始学习前端开发 — 2、CSS基础

    一.CSS简介  1.CSS是什么 CSS是Cascading Style Sheets的简称,中文称为层叠样式表.特点:实现了表现与结构相分离 2.css基础语法 css是由选择符和声明两大部分组成 ...

  3. day44前端开发2之css基础

    web前端开发1一.前端三剑客之css 1.选择器:由标签/类/id单独或组合出现 2.作用域:{}内部区域 3.样式块:满足css链接语法的各种样式 eg:引入的基本样式 <head>  ...

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

    HTML介绍 HTML是HyperTextMarkupLanguage超文本标记语言的缩写 HTML是标记语意的语言 编辑器 任何纯文本编辑器都能够编辑html,比如记事本,editplus,note ...

  5. web前端开发笔记(1)

     一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必 ...

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

      H1/H2/H3/H4标题标签常常使用在一个网页中唯一标题.重要栏目.重要标题等情形下. H1在一个网页中最好只使用一次,如对一个网页唯一标题使用.H2.H3.H4标签则可以在一个网页中多次出现, ...

  7. 好程序员web前端开发测验之css部分

    好程序员web前端开发测验之css部分Front End Web Development Quiz CSS 部分问题与解答 Q: CSS 属性是否区分大小写? <p><font si ...

  8. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  9. web前端开发笔记(2)

    一.什么是作用域. 所有变量都存在于一个执行环境中(也称作用域),这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量.总结: 执行环境有全局执行环境和函数执行环境. 每次进入一个新执 ...

  10. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

随机推荐

  1. Python多线程、多进程实现

    劝君莫惜金缕衣,劝君惜取少年时.花开堪折直须折,莫待无花空折枝. 内容摘要: paramiko模块 进程.与线程区别 python GIL全局解释器锁 多线程    语法    join    线程锁 ...

  2. 二分查找的实现(java版本)

    一.二分法查找的定义 依次将所查找数据与中心数据对比,根据大小调整数据边界二.二分查找的条件 数组必须排序三.二分查找的原理 四.二分法查找的代码 /* * 从数组当中找到4所在的索引: * {2,4 ...

  3. c++如何解决大数组栈内存不够的问题

    在c++中,我们可以直接通过下面的方式创建一个数组: ; ; ; double phi[N][Nx][Ny]; double phi_b[N][Nx][Ny]; 但是,如果上述的Nx和Ny比较小还好说 ...

  4. Choose GitLab for your next open source project

    原文:https://b.agilob.net/choose-gitlab-for-your-next-project/ GitLab.com is a competitor of GIthub. I ...

  5. 第一个WCF程序

    WCF的服务需要寄宿在进程中,我们把服务端的叫做宿主,为服务指定宿主指定的过程叫服务寄宿.有两种方式一种是自我寄宿(Self-Hosting),一种是IIS寄宿方式.Self-Hosting我们通过一 ...

  6. 22-hadoop-hive搭建

    1, hive简介 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是 ...

  7. Git 撤销与修改

    增补提交 git commit –C HEAD –a --amend -C表示复用指定提交的提交留言,这个例子中是HEAD,实际上可以指定其他有效的提交名称. 如果参数是小写的-c,就会打开预先设置好 ...

  8. Pro * c Oracle 12c

    #include<stdio.h> #include<string.h> #include<stdlib.h> #include<sqlca.h> vo ...

  9. su - oracle /bin/bash: Permission denied

     1) 以root身份执行 stat /  命令 查看权限是否正确 2) chmod 755 / 3) chmod 755 /bin/bash

  10. 图解RAID 0, RAID 1, RAID 5, RAID 10

    RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...