CSS读书笔记(1)---选择器和两列布局
(1)CSS选择器优先权选择。
优先权从大到小的选择如下:
- 标有!important关键字声明的属性
- HTML中的CSS样式属性 <div style="color:red"></div>
- 作者编写的CSS文件 <link href='xx.css'>
- 用户浏览网页在浏览器中设置的样式
- 浏览器默认的样式
对于ID选择器.类选择器等,其优先级从大到小分别是:
- 直接在标签中写入样式<div style="color:red"></div> 优先积分1000
- ID选择器 优先积分100
- 类选择器 优先积分 10
- 标签选择器 div{color:blue;} 优先积分1
举个例子,对于
<div>
<p class="hi">hello world</p>
</div>
在CSS中如果有 div.hi{color:red;};其优先级是1+10=11.
(2)页面布局——两列自适应高度和两列等高布局
先布置页面结构
<div id="header">
头部信息
</div>
<div id="container">
<div class="mainBox">
<p> 主要内容区域</p>
<p> 主要内容区域</p>
<p> 主要内容区域</p>
<p> 主要内容区域</p>
<p> 主要内容区域</p>
<p> 主要内容区域</p>
<p> 主要内容区域</p>
<p> 主要内容区域</p>
</div>
<div class="sideBox">
侧边栏
<p> 主要内容区域</p>
<p> 主要内容区域</p>
<p> 主要内容区域</p>
</div>
</div>
<div id="footer">
底部信息
</div>
container容器中实现两列布局几个要点:
- 通过float实现mainBox和sideBox左右两列的效果
- container、sideBox/mainBox不设置高度
- 如果container设置了margin属性。底部的footer不会和container分开,通过在footer中清除浮动也没效果。通过在container后面加入一个看不见的不可见的块级元素并且清除浮动可以实现
*{
margin:0;
padding:0;
}/* 设置页面中所有元素的内外补丁为0*/
#header,#footer{
height:30px;
background-color:#ccc;
}
#container{
margin:10px 0;
}/*页面主要内容区域*/
.mainBox{
float:left;
width:70%;/*利用百分比定义左右两列占container盒子的宽度*/
color:#fff;
background-color:#333;
}
.sideBox{
float:right;
width:30%;
background-color:#666;
}
#container:after{
display:block;
visibility:hidden;
font-size:0;
line-height:0;
clear:both;
content:"";
}/*在container后加入不可见的块级元素 使container和footer分开*/
#footer{
clear:both;
}/*兼容低版本IE 防止底部浮动到container右边*/
两个等高布局可以在两列自适应布局的基础上改进。主要有4种方法:背景模拟、负边距、边框模拟、javascript方式。
负边距方式:主要是在左右浮动的mainBox和sideBox加入非常大的(比如9999px)padding-bottom和很大的负值的margin-bottom,然后在其父元素中加入overflow:hidden;
#container{
width:960px;
margin:10px 0;
overflow:hidden;
}/*页面主要内容区域*/
.mainBox,.sideBox{
margin-bottom:-9999px;
padding-bottom:9999px;
}
Javascript方式:这个方式简单明了;不需要设置内容区域的高度,利用clientHeight获取区域的高度,对比左右区域高度,然后把高度大的高度赋值给另一个区域。
<script>
var mh=document.getElementById("mainBox");//这里需要对相应区域设置ID,也可以通过getElementByClassName();
var sh=document.getElementById("sideBox");
if(mh.clientHeight<sh.clientHeight){
mh.style.height=sh.clientHeight+"px"; }else{
sh.style.height=mh.clientHeight+"px";
}
</script>
JavaScript真神奇!
CSS读书笔记(1)---选择器和两列布局的更多相关文章
- css两列布局之基于BFC规则实现
css要实现常见的自适应两列布局的方式方法挺多. 这里讲的是利用设置overflow不为visible时会形成新的BFC来实现.至于什么是BFC,可以搜搜看先,基本都讲的差不多了.等有更多空余时间,专 ...
- 慕课笔记利用css进行布局【两列布局】
<html> <head> <title>两列布局</title> <style type="text/css"> bo ...
- css之页面两列布局
两列布局:左边固定,后边自适应 第一种方法:左边的div左浮动或者是绝对定位,右边的div加margin-left:左边div的宽度 html部分 <div class="left&q ...
- CSS布局——横向两列布局
1.固定两栏布局,使用float,注意对紧邻元素清除浮动影响.IE6在使用float布局同时设置横行margin的情况下会有双边距BUG,解决方案是加入_display:inline 代码如下: &l ...
- css两列布局,一边固定宽度,另一边自适应
<!DOCTYPE HTML><HTML> <head> <meta charset="utf-8" ...
- 两列布局,读《css那些事儿》
两列布局: 1.两列定宽: 要点:float.width固定. :after清除浮动. 前提:两列的盒模型宽度相加不能大于父元素的宽度,否则会出现错位现象. <!DOCTYPE html> ...
- css实现div两列布局——左侧宽度固定,右侧宽度自适应(两种方法)
原文:css实现div两列布局--左侧宽度固定,右侧宽度自适应(两种方法) 1.应用场景 左侧一个导航栏宽度固定,右侧内容根据用户浏览器窗口宽度进行自适应 2.思路 首先把这个问题分步解决,需要攻克以 ...
- CSS 布局实例系列(二)如何通过 CSS 实现一个左边固定宽度、右边自适应的两列布局
最近在百度 IFE 训练营中看见的一道题目: 用两种不同的方法来实现一个两列布局,其中左侧部分宽度固定.右侧部分宽度随浏览器宽度的变化而自适应变化 个人总结出如下三种实现思路: 通过绝对定位实现 S ...
- css布局--两列布局,左侧固定,右侧自适应(其中左侧要可以拖动,右侧水平滚动条)
(css布局所要实现的效果) 在前端面试中经常会被问到CSS布局,两列布局,左侧固定,右侧自适应.前几天去面试,遇到了这道题的升级版,要求左侧可拖动,右侧要有水平滚动条.拿到题目确实有些大脑短路,不知 ...
随机推荐
- Java8自定义条件让集合分组
/** * 将一个指定类型对象的集合按照自定义的一个操作分组: 每组对应一个List.最终返回结果类型是:List<List<T>> * * @param <T> ...
- Django链接Mysql 8.0 出现错误(1045:Access denied for user 'root'@'localhost' (using password: NO) 的一种解决方法
运行环境: Django版本2.0 ; Mysql 版本 8.0.11; 错误代码: django.db.utils.OperationalError: (1045:Access denied fo ...
- Golang - 处理字符串
目录 Golang - 处理字符串 1. 字符串操作 2. 字符串转换 Golang - 处理字符串 1. 字符串操作 func Contains(s, substr string) bool 字符串 ...
- lunix下的redis数据库操作——list列表
首先,需要先了解栈和队列的概念: 栈 先进后出:类比弹夹上的子弹,最后上进弹夹的子弹第一个使用,砌墙的板砖,后来居上 队列 先进先出:排队打饭,先到先得 创建列表: 左添加:(栈的形式添加) lp ...
- 洛谷 P2046 BZOJ 2007 海拔(NOI2010)
题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...
- [bzoj2466][中山市选2009]树_树形dp
树 bzoj-2466 中山市选-2009 题目大意:给定一棵树,每一个点有一个按钮和一个灯泡.如果按下一个点的按钮那么和这个点直接相连的点包括这个点的灯泡的状态会改变.如果是点亮就会变成熄灭,如果 ...
- 洛谷 P2399 non hates math
P2399 non hates math 题目背景 non习惯将分数化成小数,但在数学中要以分数形式写,不能化成小数 因此non找到了会编程的你,帮助他将小数化回分数 题目描述 给出一个小数,将它化成 ...
- ZOJ 3717
这题是二分+2SAT. 总结一下SAT题的特征.首先,可能会存在二选一的情况,然后会给出一些矛盾.据这些矛盾加边,再用SAT判定. 这一道题好像不能直接用printf("%0.3lf&quo ...
- TCP/IP解析(一):TCP/IP的工作方式
本文包括下面内容: 1.TCP/IP协议系统 2.OSI模型 3.数据包 4.TCP/IP的交互方式 1.TCP/IP模型的协议层 分为四层: 网络訪问层:提供与物理网络连接的接口.依据硬件的物理地址 ...
- 使用Python生成源文件的两种方法
利用Python的字符串处理模块,开发者能够编写脚本用来生成那些格式同样的C.C++.JAVA源程序.头文件和測试文件,从而避免大量的反复工作. 本文概述两种利用Python string类生成jav ...