CSS 레이아웃을 설명하기 전에 먼저 몇 가지 지식을 알아야 합니다. CSS에서 HTML의 태그 요소는 일반적으로 세 가지 유형으로 나뉩니다. 블록 요소, 인라인 요소(인라인 요소라고도 함) 및 인라인 블록 요소. 일반적으로 사용되는 블록 요소는 다음과 같습니다. ;; address>, , 일반적으로 사용되는 인라인 요소는 다음과 같습니다. , , , , , , , , ; ,, 일반적으로 사용되는 인라인 블록 요소 에는 다음이 포함됩니다. , 요소 분류--블록 수준 요소 블록 수준 요소란 무엇인가요? HTML에서는 , , , , 및 가 블록 수준 요소입니다. display:block을 설정하면 요소가 블록 수준 요소로 표시됩니다. 다음 코드는 인라인 요소 a를 블록 요소로 변환하여 a 요소가 블록 요소의 특성을 갖도록 합니다. a{display:block;}로그인 후 복사 블록 수준 요소 기능: 1. 각 블록 수준 요소는 새 줄에서 시작되고, 후속 요소도 새 줄에서 시작됩니다. (정말 부담스럽네요. 블록레벨 요소 하나가 한 줄을 차지합니다.) 2. 요소의 높이, 너비, 줄 높이, 위쪽 및 아래쪽 여백을 설정할 수 있습니다. 3. 요소의 너비가 설정되지 않은 경우 너비가 설정되지 않은 한 요소의 너비는 상위 컨테이너의 100%입니다(상위 요소의 너비와 동일). 요소 분류--인라인 요소 HTML에서는 , , , 및 이 일반적인 인라인 요소입니다(인라인 요소). (인라인) 요소. 물론 블록 요소를 display:inline 코드 를 통해 인라인 요소로 설정할 수도 있습니다. 다음 코드는 블록 요소 div를 인라인 요소로 변환하여 div 요소가 인라인 요소의 특성을 갖도록 합니다. div{ display:inline; } ...... 我要变成内联元素로그인 후 복사 인라인 요소 기능: 1. 다른 요소는 같은 줄에 있습니다. 2. 요소의 높이, 너비, 위쪽 및 아래쪽 여백은 설정할 수 없습니다. 3. 요소의 너비는 포함된 텍스트 또는 이미지의 너비이며 변경할 수 없습니다. 요소 분류--인라인 블록 요소 인라인 블록 요소(inline-block) 는 인라인 요소와 블록 요소의 특성을 모두 가지고 있습니다. display:inline-block 코드는 해당 요소를 인라인 블록 모양 요소로 설정합니다. (css2.1의 새로운 기능) 및 태그는 이러한 인라인 블록 태그입니다. 인라인 블록 요소 기능: 1. 다른 요소는 같은 줄에 있습니다. 2. 요소의 높이, 너비, 줄 높이, 위쪽 및 아래쪽 여백을 설정할 수 있습니다. 박스 모델 CSS 레이아웃 모델 CSS 박스 모델의 기본 개념과 박스 모델 유형을 이해한 후 웹 페이지 레이아웃의 기본 모델에 대해 알아볼 수 있습니다. 레이아웃 모델은 박스 모델과 마찬가지로 CSS의 가장 기본이자 핵심 개념입니다. 그러나 레이아웃 모델은 상자 모델을 기반으로 하며 우리가 CSS 레이아웃 스타일 또는 CSS 레이아웃 템플릿이라고 부르는 것과는 다릅니다. 레이아웃 모델이 기초라면 CSS 레이아웃 템플릿은 외부 표현의 끝입니다. CSS에는 영어로 요약하면 Flow, Layer, Float라는 3가지 기본 레이아웃 모델이 포함되어 있습니다. 웹 페이지에서 요소에는 세 가지 레이아웃 모델이 있습니다. 1. 흐름 모델(Flow) 2. 플로트 모델(Float) 레이어 모델(Layer) 流动模型 先来说一说流动模型,流动(Flow)是默认的网页布局模式。也就是说网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。 流动布局模型具有2个比较典型的特征: 第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。如右侧代码编辑器中三个块状元素标签(div,h1,p)宽度显示为100%。 第二点,在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。(内联元素可不像块状元素这么霸道独占一行) 右侧代码编辑器中内联元素标签a、span、em、strong都是内联元素。 浮动模型 块状元素这么霸道都是独占一行,如果现在我们想让两个块状元素并排显示,怎么办呢?不要着急,设置元素浮动就可以实现这一愿望。 任何元素在默认情况下是不能浮动的,但可以用 CSS 定义为浮动,如 div、p、table、img 等元素都可以被定义为浮动。如下代码可以实现两个 div 元素一行显示。 div{ width:200px; height:200px; border:2px red solid; float:left; } <div id="div1">div> <div id="div2">div>로그인 후 복사 层模型--绝对定位 如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。 如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。 div{ width:200px; height:200px; border:2px red solid; position:absolute; left:100px; top:50px; } <div id="div1">div>로그인 후 복사 层模型--相对定位 如果想为元素设置层模型中的相对定位,需要设置position:relative(表示相对定位),它通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动。 如下代码实现相对于以前位置向下移动50px,向右移动100px; #div1{ width:200px; height:200px; border:2px red solid; position:relative; left:100px; top:50px; } <div id="div1">div>로그인 후 복사 层模型--固定定位 fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响,这与background-attachment:fixed;属性功能相同。以下代码可以实现相对于浏览器视图向右移动100px,向下移动50px。并且拖动滚动条时位置固定不变。 #div1{ width:200px; height:200px; border:2px red solid; position:fixed; left:100px; top:50px; } <p>文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。p>로그인 후 복사 隐性改变display类型 有一个有趣的现象就是当为元素(不论之前是什么类型元素,display:none 除外)设置以下 2 个句之一: 1. position : absolute 2. float : left 或 float:right 简单来说,只要html代码中出现以上两句之一,元素的display显示类型就会自动变为以 display:inline-block(块状元素)的方式显示,当然就可以设置元素的 width 和 height 了,且默认宽度不占满父元素。 如下面的代码,小伙伴们都知道 a 标签是 行内元素 ,所以设置它的 width 是 没有效果的,但是设置为 position:absolute 以后,就可以了。 <div class="container"> <a href="#" title="">进入课程请单击这里a> div> css代码 <style> .container a{ position:absolute; width:200px; background:#ccc; } style>로그인 후 복사 <!-- .box{ width: 50px; height: 50px; background-color: #00dd88; margin: 0 5px 5px 0; float: left; transition: all 0.3s; } .clear{ clear: both; } .box:hover{ background-color: #fff; width:0; height: 0; border-bottom: none; border-top: 50px solid #00dd88; border-left: 25px solid transparent; border-right: 25px solid transparent; } -->