第 27 章 CSS 传统布局[下] - 水之原
学习要点:
1.定位布局
2.box-sizing
3.resize
主讲教师:李炎恢
本章主要探讨 HTML5 中 CSS 早期所使用的传统布局,很多情况下,这些布局方式还是非常有用的。
一.定位布局
在使用定位布局前,我们先了解一下定位属性的用法。CSS2 提供了 position 属性来实现元素的绝对定位和相对定位。
属性 |
说明 |
static |
默认值,无定位。 |
absolute |
绝对定位,使用 top、right、bottom、left进行位移。 |
relative |
相对定位,使用 top、right、bottom、left进行位移。 |
fixed |
以窗口参考定位,使用 top、right、bottom、left 进行位移。 |
//绝对定位,脱离文档流,以窗口文档左上角 0,0 为起点
<span style="color: #800000;">header </span>{<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> absolute</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 100px</span>;<span style="color: #ff0000;"> left</span>:<span style="color: #0000ff;"> 100px</span>; }
所谓脱离文档流的意思,就是本身这个元素在文档流是占位的。如果脱离了,就不占有文档的位置,好像浮在了空中一般,有了层次感。
由于绝对定位脱离了文档流,出现层次概念。那么每个元素到底在那一层,会不会冲突覆盖。这时通过 z-index 属性来判定它们的层次关系。
属性 |
说明 |
auto |
默认层次 |
数字 |
设置层次,数字越大,层次越高 |
//设置在 100 层上
<span style="color: #800000;">header </span>{<span style="color: #ff0000;"> z-index</span>:<span style="color: #0000ff;"> 100</span>; }
//以窗口参考定位,脱离文档流,会随着滚动条滚动而滚动
<span style="color: #800000;">header </span>{<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> fixed</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 100px</span>;<span style="color: #ff0000;"> left</span>:<span style="color: #0000ff;"> 100px</span>; }
//相对定位,不脱离文档流,占位偏移
<span style="color: #800000;">header </span>{<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> relative</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 100px</span>;<span style="color: #ff0000;"> left</span>:<span style="color: #0000ff;"> 100px</span>; }
这三种分别都在各自的情况下使用,均比较常用。但还有一种情况,就是:1.既要脱离文档流(这样元素之间不会相互冲突);2.以父元素,比如 body 或其他父元素为参考点(这样可以实现区域性绝对定位);3.还必须是绝对定位。
//第一步,将需要设置参考点的父元素设置为相对,且不设置坐标
<span style="color: #800000;">body </span>{<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> relative</span>; }
//第二步,如果父元素设置了参考点,子元素的绝对定位将以它为基准
<span style="color: #800000;">header </span>{<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> absolute</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 0px</span>;<span style="color: #ff0000;"> left</span>:<span style="color: #0000ff;"> 0px</span>; }
1.固定布局
//CSS 部分
<span style="color: #800000;">body </span>{<span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 960px</span>;<span style="color: #ff0000;"> margin</span>:<span style="color: #0000ff;"> 0 auto</span>;<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> relative</span>; }<span style="color: #800000;"> header </span>{<span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 960px</span>;<span style="color: #ff0000;"> height</span>:<span style="color: #0000ff;"> 120px</span>;<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> absolute</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 0</span>;<span style="color: #ff0000;"> left</span>:<span style="color: #0000ff;"> 0</span>; }<span style="color: #800000;"> aside </span>{<span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 200px</span>;<span style="color: #ff0000;"> height</span>:<span style="color: #0000ff;"> 500px</span>;<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> absolute</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 120px</span>;<span style="color: #ff0000;"> left</span>:<span style="color: #0000ff;"> 0</span>; }<span style="color: #800000;"> section </span>{<span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 760px</span>;<span style="color: #ff0000;"> height</span>:<span style="color: #0000ff;"> 500px</span>;<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> absolute</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 120px</span>; <span style="color: #008000;">/*</span><span style="color: #008000;">left: 200px;</span><span style="color: #008000;">*/</span><span style="color: #ff0000;"> right</span>:<span style="color: #0000ff;"> 0</span>; }<span style="color: #800000;"> footer </span>{<span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 960px</span>;<span style="color: #ff0000;"> height</span>:<span style="color: #0000ff;"> 120px</span>;<span style="color: #ff0000;"> position</span>:<span style="color: #0000ff;"> absolute</span>;<span style="color: #ff0000;"> top</span>:<span style="color: #0000ff;"> 620px</span>; }
在上面,基本都用了定位来进行固定布局。但细心的可以发现,其实只有右侧需要实行绝对定位,其他就按照普通的摆放即可。对于设计成流体布局,只要将长度设置成百分比即可。
二.box-sizing
在盒模型那个章节,我们了解到元素盒子如果加入了内边距 padding 和边框 border 后,它的总长度会增加。那么如果这个元素用于非常精确的布局时,我们就需要进行计算增减。这其实是比较烦人的操作,尤其是动态设置页面布局的时候。
CSS3 提供了一个属性 box-sizing,这个属性可以定义元素盒子的解析方式,从而可以选择避免掉布局元素盒子增加内边距和边框的长度增减问题。
属性 |
说明 |
content-box |
默认值,border 和 padding 设置后用于元素的总 |
border-box |
border 和 padding 设置后不用于元素的总长度。 |
//设置 border-box 让 border 和 padding 不在额外增加元素大小
<span style="color: #800000;">aside </span>{<span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 200px</span>;<span style="color: #ff0000;"> height</span>:<span style="color: #0000ff;"> 500px</span>;<span style="color: #ff0000;"> background-color</span>:<span style="color: #0000ff;"> purple</span>;<span style="color: #ff0000;"> padding</span>:<span style="color: #0000ff;"> 10px</span>;<span style="color: #ff0000;"> border</span>:<span style="color: #0000ff;"> 5px solid red</span>;<span style="color: #ff0000;"> box-sizing</span>:<span style="color: #0000ff;"> border-box</span>;<span style="color: #ff0000;"> float</span>:<span style="color: #0000ff;"> left</span>; }
|
Opera |
Firefox |
Chrome |
Safari |
IE |
支持需带前缀 |
无 |
2 ~ 28 |
4 ~ 9 |
3.1 ~ 5 |
8.0+ |
支持不带前缀 |
10.1+ |
29+ |
10+ |
6+ |
9.0+ |
//完整形式
<span style="color: #800000;">-webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box;</span>
三.resize
CSS3 提供了一个 resize 属性,来更改元素尺寸大小。
属性 |
说明 |
none |
默认值,不允许用户调整元素大小。 |
both |
用户可以调节元素的宽度和高度。 |
horizontal |
用户可以调节元素的宽度。 |
vertical |
用户可以调节元素的高度。 |
一般普通元素,默认值是不允许的。但如果是表单类的 textarea 元素,默认是允许的。而普通元素需要设置 overflow:auto,配合 resize 才会出现可拖拽的图形。
//允许修改
<span style="color: #800000;">aside </span>{<span style="color: #ff0000;"> resize</span>:<span style="color: #0000ff;"> both</span>;<span style="color: #ff0000;"> overflow</span>:<span style="color: #0000ff;"> auto</span>; }

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











공식 계정 웹 페이지 업데이트 캐시, 이것은 간단하고 간단하며 냄비를 마시기에 충분히 복잡합니다. 공식 계정 기사를 업데이트하기 위해 열심히 노력했지만 사용자는 여전히 기존 버전을 열었습니까? 이 기사에서는이 뒤에있는 비틀기와 회전을 살펴 보고이 문제를 우아하게 해결하는 방법을 살펴 보겠습니다. 읽은 후에는 다양한 캐싱 문제를 쉽게 처리 할 수있어 사용자가 항상 가장 신선한 콘텐츠를 경험할 수 있습니다. 기본 사항에 대해 먼저 이야기 해 봅시다. 액세스 속도를 향상시키기 위해 브라우저 또는 서버는 일부 정적 리소스 (예 : 그림, CSS, JS) 또는 페이지 컨텐츠를 저장합니다. 다음에 액세스 할 때 다시 다운로드하지 않고도 캐시에서 직접 검색 할 수 있으며 자연스럽게 빠릅니다. 그러나 이것은 또한 양날의 검입니다. 새 버전은 온라인입니다.

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

이 기사는 CSS를 사용한 웹 페이지에 효율적인 PNG 테두리 추가를 보여줍니다. CSS는 JavaScript 또는 라이브러리에 비해 우수한 성능을 제공하며, 미묘하거나 눈에 띄는 효과를 위해 테두리 너비, 스타일 및 색상 조정 방법을 자세히 설명합니다.

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex
