整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML常用代码有哪些?

TML即超文本标记语言,是目前应用最为广泛的语言之一,是组成一个网页的主要语言。在现今这个HTML5华丽丽地占领了整个互联网的时候,如果想要通过网页抓住浏览者的眼球光靠因循守旧是不行的,程序猿们需要掌握一些必须知道的HTML常用代码,因为只有熟悉掌握了常用的HTML代码,程序猿们在编写网页的时候才可以做到流畅美观,用细腻的思维和创意的细节效果打动并留住网页浏览者。

html+css代码

文本设置

1、font-size: 字号参数

2、font-style: 字体格式

3、font-weight: 字体粗细

4、颜色属性

color: 参数

注意使用网页安全色

超链接设置

text-decoration: 参数

主要用途是改变浏览器显示文字链接时的下划线。

参数取值范围:

underline:为文字加下划线

overline:为文字加上划线

line-through:为文字加删除线

blink:使文字闪烁

none:不显示上述任何效果

背景

1、背景颜色

background-color: 参数

2、背景图片

background-image: url(URL)

URL就是背景图片的存放路径,none表示无。

3、背景图片重复

background-repeat: 参数

参数取值范围 :

no-repeat:不重复平铺背景图片

repeat-x:使图片只在水平方向上平铺

repeat-y:使图片只在垂直方向上平铺

如果不指定背景图片重复属性,浏览器默认的是背景图片向水平、垂直两个方向上平铺。

4、背景图片固定

背景图片固定控制背景图片是否随网页的滚动而滚动。如果不设置背景图片固定属性,浏览器默认背景图片随网页的滚动而滚动。为了避免过于花哨的背景图片在滚动时转移浏览者的注意力,一般都设为固定

background-attachment: 参数

参数取值范围:

fixed:网页滚动时,背景图片相对于浏览器的窗口而言,固定不动

scroll:网页滚动时,背景图片相对于浏览器的窗口而言,一起滚动

区块

1、单词间距

word-spacing: 间隔距离

2、字母间距

letter-spacing: 字母间距

3、文本对齐

text-align: 参数

参数的取值:

left:左对齐

right:右对齐

center:居中对齐

justify:相对左右对齐

4、垂直对齐

vertical-align: 参数

top:顶对齐

bottom:底对齐

text-top:相对文本顶对齐

text-bottom:相对文本底对齐

baseline:基准线对齐

middle:中心对齐

sub:以下标的形式显示

super:以上标的形式显示

5、文本缩进

text-indent: 缩进距离

12px相当于一个文字距离

6、空格

white-space: 参数

normal 正常

pre 保留

nowrap 不换行

7、显示样式

display: 参数

参数取值范围:

block:块级元素,在对象前后都换行

inline:在对象前后都不换行

list-item:在对象前后都换行,增加了项目符号

none:无显示

方框

1、height 高度

2、width 宽度

3、padding 内边距

4、margin 外边距

5、float(浮动):可以让块级元素在一行中排列,例如横向菜单。

6、clear 清除浮动

边框

1、样式

border style 参数

边框样式的参数:

none:无边框

dotted:边框为点线

dashed:边框为长短线

solid:边框为实线

double:边框为双线

2、宽度

border width 参数

3、颜色

border color 参数

列表

list-style-type 列表样式

不同浏览器的列表符可能不相同,可能会影响到网页,所以网页中的列表大多都是由背景图片显示。

控制用户界面的样式

鼠标

cursor:鼠标形状参数

CSS鼠标形状参数表:

鼠标形状:CSS代码

style="cursor:hand"      手形

style="cursor:crosshair"   十字形

style="cursor:text"      文本形

style="cursor:wait"      沙漏形

style="cursor:move"     十字箭头形:

style="cursor:help"      问号形

style="cursor:e-resize"    右箭头形

style="cursor:n-resize"    上箭头形

style="cursor:nw-resize"   左上箭头形

style="cursor:w-resize"    左箭头形

style="cursor:s-resize"    下箭头形

style="cursor:se-resize"   右下箭头形

style="cursor:sw-resize"   左下箭头形

HTML常用代码之:结构性定义

文件类型<HTML></HTML> (放在档案的开头与结尾)

文件主题<TITLE></TITLE> (必须放在「文头」区块内)

文头<HEAD></HEAD> (描述性资料,像是「主题」)

文体<BODY></BODY> (文件本体)

标题<H?></H?> (从1到6,有六层选择)

标题的对齐 <H?ALIGN=LEFT|CENTER|RIGHT></H?>

区分<DIV></DIV>

区分的对齐 <DIVALIGN=LEFT|RIGHT|CENTER|JUSTIFY></DIV>

引文区块<BLOCKQUOTE></BLOCKQUOTE> (通常会内缩)

强调<EM></EM> (通常会以斜体显示)

特别强调<STRONG></STRONG> (通常会以加粗显示)

引文<CITE></CITE> (通常会以斜体显示)

码<CODE></CODE> (显示原始码之用)

样本<SAMP></SAMP>

键盘输入<KBD></KBD>

变数<VAR></VAR>

定义<DFN></DFN> (有些浏览器不提供)

地址 <ADDRESS></ADDRESS>

大字<BIG></BIG>

小字<SMALL></SMALL>

与外观相关的标签(作者自订的表现方式)

加粗<B></B>

斜体<I></I>

底线<U></U> (尚有些浏览器不提供)

删除线<S></S> (尚有些浏览器不提供)

下标<SUB></SUB>

上标<SUP></SUP>

打字机体<TT></TT> (用单空格字型显示)

预定格式<PRE></PRE> (保留文件中空格的大小)

预定格式的宽度<PRE WIDTH=?></PRE>(以字元计算)

向中看齐<CENTER></CENTER> (文字与图片都可以)

闪耀<BLINK></BLINK> (有史以来最被嘲弄的标签)

字体大小 <FONTSIZE=?></FONT>(从1到7)

改变字体大小 <FONTSIZE=+|-?></FONT>

基本字体大小 <BASEFONTSIZE=?> (从1到7; 内定为3)

字体颜色 <FONTCOLOR="#$$"></FONT>($$为颜色代码)

HTML常用代码之:修改页面的实用性HTML代码

贴图:<img src="图片地址">

加入连接:<a href="所要连接的相关地址">写上你想写的字</a>

在新窗口打开连接:<a href="相关地址" target="_blank">写上要写的字</a>

移动字体(走马灯):<marquee>写上你想写的字</marquee>

字体加粗:<b>写上你想写的字</b>

字体斜体:<i>写上你想写的字</i>

字体下划线: <u>写上你想写的字</u>

字体删除线: <s>写上你想写的字</s>

字体加大: <big>写上你想写的字</big>

字体控制大小:<h1>写上你想写的字</h1> (其中字体大小可从h1-h5,h1最大,h5最小)

更改字体颜色:<font color="#value">写上你想写的字</font>(其中value值在000000与ffffff(16位进制)之间

消除连接的下划线:<a href="相关地址" style="text-decoration:none">写上你想写的字</a>

贴音乐:<embed src="音乐地址" width="宽度" height="高度" autostart=false>

贴flash: <embed src="flash地址" width="宽度" height="高度">

贴影视文件:<img dynsrc="文件地址" width="宽度" height="高度" start=mouseover>

换行:<br>

段落:<p>段落</p>

原始文字样式:<pre>正文</pre>

换帖子背景:<body background="背景图片地址">

固定帖子背景不随滚动条滚动:<body background="背景图片地址" body bgproperties=fixed>

定制帖子背景颜色:<body bgcolor="#value">(value值见10)

帖子背景音乐:<bgsound="背景音乐地址" loop=infinite>

贴网页:<iframe. src="相关地址" width="宽度" height="高度"></iframe>

HTML常用代码之:常常会遇到的问题

点击关闭窗口

<a href="javascript.:top.window.close();">点击关闭窗口</a>!

请问如何去掉主页右面的滚动条?

<body scroll="no">

<body style="overflow-y:hidden">

如何做到让一个网页自动关闭.

<html>

<head>

<OBJECT id=closes type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">

<param name="Command" value="Close">

</object>

</head>

<body >

这个窗口会在10秒过后自动关闭,而且不会出现提示. </body>

如何在不刷新页面的情况下刷新css?

<style>

button{ color:#000000;}

</style>

<button nclick=document.styleSheets[0].rules[0].style.color=‘‘‘‘red‘‘‘‘>点击按钮直接修改style标签里button选择符使按钮改为  红色</button>

请问如何让网页自动刷新?

在head部记入<META. HTTP-EQUIV="Refresh" c>其中20为20秒后自动刷新,你可以更改为任意值。

如何让页面自动刷新?

方法一,用refresh

HTML 代码片段如下:

<head>

<meta. http-equiv="refresh" c>

</head>

5表示刷新时间

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

方法二,使用setTimeout控制

<img src=/logo.gif>

<script>

function rl(){

document.location.reload()

}

setTimeout(rl,2000)

</SCRIPT>

如何让超链接没有下划线

在源代码中的<HEAD>…</HEAD>之间输入如下代码:

<style. type="text/css"> <!--

a { text-decoration: none}

--> </style>

请问如何去掉IE的上下滚动条?

<body style=‘‘‘‘overflow:scroll;overflow-y:hidden‘‘‘‘>

</body>

怎样才能把RealPlayer文件在网页做一个试听连接?

<embed height=25 src=51js.rm type=audio/x-pn-realaudio-plugin width=50 autostart="false" c>

如何用html实现浏览器上后退按钮的功能?

<a href="java script.:history.go(-1)">点击后退</a>

或者

<script> history.back() </SCRIPT>

HTML常用代码之:你不一定知道的技巧

ncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键

<table borderncontextmenu=return(false)><td>no</table> 可用于Table

<body nselectstart="return false"> 取消选取、防止复制

onpaste="return false" 不准粘贴

oncopy="return false;" ncut="return false;" 防止复制

<link rel="Shortcut Icon"href="favicon.ico"> IE地址栏前换成自己的图标

<link rel="Bookmark"href="favicon.ico"> 可以在收藏夹中显示出你的图标

<inputstyle="ime-mode:disabled"> 关闭输入法

永远都会带着框架

<script. language="JavaScript"><!--

if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页

// --></script>

防止被人frame.

<SCRIPT. LANGUAGE=JAVASCRIPT><!--

if (top.location != self.location)top.location=self.location;

// --></SCRIPT>

网页将不能被另存为

<noscript><iframe.src=*.html></iframe></noscript>

查看网页源代码

<input type=button value=查看网页源代码

onclick="window.location = "view-source:"+"http://www.w3cschool.cn"">

删除时确认

<a href="javascript:if(confirm("确实要删除吗?"))location="boos.asp? &areyou=删除&page=1"">删除</a>

屏蔽功能键Shift,Alt,Ctrl

<script>

function look(){

if(event.shiftKey)

alert("禁止按Shift键!");//可以换成ALT CTRL

}

document.onkeydown=look;

</script>

网页不会被缓存

<META. HTTP-EQUIV="pragma" CONTENT="no-cache">

<META. HTTP-EQUIV="Cache-Control"CONTENT="no-cache, must-revalidate">

<META. HTTP-EQUIV="expires"CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

或者<META. HTTP-EQUIV="expires"CONTENT="0">

怎样让表单没有凹凸感?

<input type=text style="border:1 solid #000000">

<input type=text style="border-left:none;border-right:none; border -top:none; border-bottom: 1 solid#000000"></textarea>

不要滚动条?

让竖条没有:

<body style="overflow:scroll;overflow-y:hidden">

</body>

让横条没有:

<body style="overflow:scroll;overflow-x:hidden">

</body>

两个都去掉?更简单了

<body scroll="no">

</body>

怎样去掉图片链接点击后,图片周围的虚线?

<a href="#"nFocus="this.blur()"><img src="logo.jpg"border=0></a>

电子邮件处理提交表单

<form. name="form1"method="post" action="mailt****@***.com"enctype="text/plain">

<input type=submit>

</form>

在打开的子窗口刷新父窗口的代码里如何写?

window.opener.location.reload()

如何设定打开页面的大小

<body nload="top.resizeTo(300,200);">

打开页面的位置<bodynload="top.moveBy(300,200);">

在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动

<STYLE>

body

{background-image:url(logo.gif); background-repeat:no-repeat;

background-position:center;background-attachment: fixed}

</STYLE>

检查一段字符串是否全由数字组成

<script. language="Javascript"><!--

function checkNum(str){return str.match(//D/)==null}

alert(checkNum("1232142141"))

alert(checkNum("123214214a1"))

// --></script>

获得一个窗口的大小

document.body.clientWidth; document.body.clientHeight

怎么判断是否是字符

if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");

else alert("全是字符");

TEXTAREA自适应文字行数的多少

<textarea rows=1 name=s1 cols=27npropertychange="this.style.posHeight=this.scrollHeight">

</textarea>

日期减去天数等于第二个日期

<script. language=Javascript>

function cc(dd,dadd)

{

//可以加上错误处理

var a = new Date(dd)

a = a.valueOf()

a = a - dadd * 24 * 60 * 60 * 1000

a = new Date(a)

alert(a.getFullYear() + "年" + (a.getMonth() +1) + "月" + a.getDate() + "日")

} cc("12/23/2002",2)

</script>

选择了哪一个Radio

<HTML><script. language="vbscript">

function checkme()

for each ob in radio1

if ob.checked then window.alert ob.value

next

end function

</script><BODY>

<INPUT name="radio1" type="radio"value="style" checked>Style.

<INPUT name="radio1" type="radio"value="barcode">Barcode

<INPUT type="button" value="check"nclick="checkme()">

</BODY></HTML>


级导航

具体实现方法如下:

首先在html中写出一级菜单列表,然后在每个一级菜单中再嵌套一个列表即可创建一个二级菜单。

index.html

<div class="menu">
        <ul>
            <li><a href="">一级菜单</a>
                <ul>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                </ul>
            </li>
            <li><a href="">一级菜单</a>
                <ul>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                </ul>
            </li>
            <li><a href="">一级菜单</a>
                <ul>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                    <li><a href="">二级菜单</a></li>
                </ul>
            </li>
        </ul>
    </div>

接着写样式文件,主要是对列表样式和位置进行修改

<style>
	* {
		padding: 0;/*内边距:分别左,上,右,下都为0,这样就不会出现左右上下内间距*/
		margin: 0/*外边距:分别左,上,右,下都为0,这样就不会出现左右上下间距*/
	}
	
	.menu ul li {
		list-style: none;/*列表样式*/
		background-color: burlywood;/*背景颜色*/
		width: 120px;/*宽度*/
		text-align: center;/*文本对齐:居中*/
		height: 40px;/*高度*/
		position: relative/*定位:一般用这个就可以绝对定位*/
	}
	
	.menu ul li a {
		text-decoration: none;/*超链接下划线:无*/
		display: block;/*显示:正常显示用block,隐藏none*/
		line-height: 40px
	}
	
	.menu ul li:hover {
		background-color: aqua
	}
	
	.menu ul li ul {
		display: none;
		position: absolute;
		left: 120px;
		top: 0
	}
	
	.menu ul li:hover ul {
		display: block
	}


		</style>

这里需要注意的是一级菜单列表的定位方式要设置为relative,二级菜单列表的定位方式要设置为absolute,这样二级菜单才会在一级菜单相对的位置出现。

然后通过display这个属性控制二级菜单的显示和隐藏就可以了。

下一个文章:轮播图

TML

src和href的区别

src和href都是用来加载外部资源,区别如下

src当浏览器解析到该元素时,会暂停其他资源的加载和处理,直到该资源加载完成。 它会将资源内容嵌入到当前标签所在的位置,将其指向的资源下载应用到文档内,如js脚本等。常用在img、script、iframe等标签。

href指向外部资源所在的位置,和当前元素位置建立链接,当浏览器解识别到它指向的位置,将其下载的时候不会阻止其他资源的加载解析。常用在a 、 link标签。

HTML5新增特性

  • 新增语义化标签,head、footer、nav、main、section等
  • 新增表单类型属性,email、number、时间控件、color颜色拾取器、placeholder、autofocus自动获取焦点...
  • 新增音视频标签,video、audio
  • 新增canvas画布、websocket通信、拖拽等
  • 新增本地存储localStorage、sessionStorage

对HTML语义化理解

根据内容来选择合适的标签

  • 方便浏览器爬虫更好的识别内容。
  • 有利于代码可读性,开发者能清晰的看出网页的结构,便于团队的开发与维护。

DOCTYPE(⽂档类型) 的作⽤

DOCTYPE是HTML5中一种标准通用标记语言的文档类型声明,是用来告诉浏览器的解析器,该用什么样的方式去加载识别文档。

iframe 有那些优点和缺点?

iframe通常用来加载外部链接,不会影响网页内容的加载。

优点

  • 可以将网页原封不动的加载进来
  • 增加代码的可用性
  • 用来加载显示较慢的内容,如广告、视频等

缺点

  • 加载的内容无法被浏览器引擎识别,对SEO不友好
  • 会阻塞onload事件加载
  • 会产生很多页面,不利于管理

Canvas和SVG的区别

  • canvas画布,是通过javascript来绘制2d图,是逐像素进行渲染。
  • SVG矢量图,是基于XML描述的2D图形语言,每个元素都是可用的,可以为其添加事件。

script标签中defer和async的区别

他俩都是表示异步加载外部JS脚本,不会阻碍页面的加载解析。 区别

  • 执行顺序:有多个async标签不能保证先后加载顺序,而多个defer标签可以按先后顺序加载。
  • 是否立即执行:async加载完脚本后会立即执行,defer是要等文档解析完成后才执行

行内元素、块级元素、空(void)

  • 行内: a、b、span、input、img、select、 strong
  • :p、div、h1、ul、ol、li、dl、dt、dd
  • :<hr>、<br>、<img>、<input>、<link>、<meta>

怎样添加、移除、移动、复制、创建和查找节点

  • 添加节点document.appendChild(dom)
  • 移除节点document.removeChild(dom)
  • 移动节点document.appendChild(targetDom)
  • 复制节点dom.cloneNode(true),参数true表示是否复制子节点
  • 创建节点document.createElement(dom)
  • 查找节点: document.getElementById("elementId") document.getElementsByClassName("className") document.getElementsByTagName("tagName") document.querySelector("selector") document.querySelectorAll("selector")

CSS

CSS3新增特性

  • 新增CSS选择器、伪类
  • 特效:text-shadow、box-shadow
  • 线性渐变: gradient
  • 旋转过渡:transform、transtion
  • 动画: animation
  • 圆角: border-radius

盒模型

盒模型都是由四个部分组成的,分别是margin、border、padding和content。

标准盒模型和IE盒模型的区别在于设置width和height时,对应的范围不同。

  • 标准盒模型的width、height只包含了content
  • IE盒模型的的width、height除了content本身,还包含了border、padding

通过修改元素的box-sizing属性来改变元素的盒模型

  • box-sizeing: content-box表示标准盒模型(默认值)
  • box-sizeing: border-box表示IE盒模型(IE盒模型)

CSS选择器和优先级

选择器

选择器

权重

id选择器 #id

100

类选择器 .classname

10

属性选择器 div[class="foo"]

10

伪类选择器 div::last-child

10

标签选择器 div

1

伪元素选择器 div:after

1

兄弟选择器 div+span

0

子选择器 ui>li

0

后代选择器 div span

0

通配符选择器

0

优先级

  • !important
  • 内联样式
  • ID选择器
  • 类选择器/伪类选择器/属性选择器
  • 标签选择器/伪元素选择器
  • 关系选择器/通配符选择器

CSS可继承属性和不可继承属性

可继承

  • font-weight
  • color
  • font-size
  • line-height
  • cursor
  • ...

不可继承

  • margin、padding、border
  • display
  • background
  • overflow
  • width、height
  • position
  • ...

dislpay的属性和作用

属性

作用

block

块类型。默认宽度为父元素宽度,可设置宽高,换行显示。

inline

行内元素类型。默认宽度为内容宽度,不可设置宽高,同行显示。

inline-block

行内块级元素,默认宽度为内容宽度,可以设置宽高,同行显示

table

块级表格

flex

flex容器布局

none

隐藏元素

inherit

从父类继承display属性

隐藏元素的方式

  • display:none:元素在文档中不存在,不会占据位置。
  • visibility: hidden:元素在文档中的位置还保留,仍然占据空间。
  • opacity:0:将透明度设置为0。
  • z-index:负值:直接将元素放置在最下层,利用其他元素来遮盖。
  • position:absolute:将元素定位到可视区域以外。

单行、多行文本溢出

单行

css

复制代码

overflow: hidden; // 溢出隐藏 text-overflow: ellipsis; // 溢出用省略号显示 whtie-space: nowrap; //规定段落中的文本不进行换行

多行

CSS

复制代码

overflow:hidden text-overflow: ellipsis; // 溢出用省略号显示 display:-webkit-box; // 作为弹性伸缩盒子模型显示。 -webkit-box-orient:vertical; // 设置伸缩盒子的子元素排列方式:从上到下垂直排列 -webkit-line-clamp:3; // 显示的行数

有了使用过Sass、Less 吗?他们的区别是什么?

他们都是 CSS 预处理器,是 CSS 上的一种抽象层。他们是一种特殊的语法/语言编译成 CSS。 增加了 CSS代码的复用性,层级,mixin, 变量,循环, 函数等对编写以及开发UI组件都极为方便。 区别

  1. 编译环境不一样 Sass是在服务端处理的,以前是Ruby,现在是Dart-Sass或Node-Sass 而Less是需要引入less.js来处理Less代码输出CSS到浏览器,也可以在开发服务器将Less语法编译成css文件,输出CSS文件到生产包目录
  2. 变量符不一样,Less是@,而Scss是$。
  3. Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持

link和@import的区别

  • link是HTML提供的标签,不仅可以加载CSS文件,还可以定义RSS、rel连接属性等
  • @import是CSS提供等语法规则,只有导入样式表带作用。
  • link标签引入的CSS被同时加载,而@import引入的CSS将在页面加载完毕后被加载
  • @import是CSS2.1才有的语法,存在兼容性,而link作为HTML标签不存在兼容性问题

常见的CSS单位

  • px像素 CSS像素 物理像素
  • 百分比%,作用于父元素, 当浏览器的宽度或者高度发生变化时,当前元素依据比例发生变化。
  • em和rem,相对长度单位,它们之间的区别:em相对于父元素,rem相对于根元素。
  • vw/vh是与视图窗口有关的单位,代表视图窗口的宽高。

px、em、rem的区别

  • px 固定像素单位,不能随其它元素的变化而变化
  • em是相对于父元素的单位,会随着父元素变化而变化
  • rem是相对于根元素html,它会随着html元素变化而变化

两栏布局

  • 利用浮动,将左边元素宽度设置为200px,并且设置向左浮动。将右边元素的margin-left设置为200px,宽度设置为auto(默认为auto,撑满整个父元素)。
CSS

复制代码

.outer { height: 100px; } .left { float: left; width: 200px; background: tomato; } .right { margin-left: 200px; width: auto; background: gold; }

  • 利用浮动,左侧元素设置固定大小,并左浮动,右侧元素设置overflow: hidden; 这样右边就触发了BFC,BFC的区域不会与浮动元素发生重叠,所以两侧就不会发生重叠。
CSS

复制代码

.left{ width: 100px; height: 200px; background: red; float: left; } .right{ height: 300px; background: blue; overflow: hidden; }

  • 利用flex布局,将左边元素设置为固定宽度200px,将右边的元素设置为flex:1。
CSS

复制代码

.outer { display: flex; height: 100px; } .left { width: 200px; background: tomato; } .right { flex: 1; background: gold; }

  • 利用绝对定位,将父级元素设置为相对定位。左边元素设置为absolute定位,并且宽度设置为200px。将右边元素的margin-left的值设置为200px。
CSS

复制代码

.outer { position: relative; height: 100px; } .left { position: absolute; width: 200px; height: 100px; background: tomato; } .right { margin-left: 200px; background: gold; }

三栏布局

  • 利用绝对定位,左右两栏设置为绝对定位,中间设置对应方向大小的margin的值。
  • 利用flex布局,左右两栏设置固定大小,中间一栏设置为flex:1。
  • 利用浮动,左右两栏设置固定大小,并设置对应方向的浮动。中间一栏设置左右两个方向的margin值,注意这种方式,中间一栏必须放到最后:
  • 圣杯布局,利用浮动和负边距来实现。父级元素设置左右的 padding,三列均设置向左浮动,中间一列放在最前面,宽度设置为父级元素的宽度,因此后面两列都被挤到了下一行,通过设置 margin 负值将其移动到上一行,再利用相对定位,定位到两边。
  • 双飞翼布局,双飞翼布局相对于圣杯布局来说,左右位置的保留是通过中间列的 margin 值来实现的,而不是通过父元素的 padding 来实现的。本质上来说,也是通过浮动和外边距负值来实现的。

水平垂直居中

  • 利用绝对定位,先将元素的左上角通过top:50%和left:50%定位到页面的中心,然后再通过translate来调整元素的中心点到页面的中心。该方法需要考虑浏览器兼容问题。
CSS

复制代码

.parent { position: relative; } .child { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); }

  • 利用绝对定位,设置四个方向的值都为0,并将margin设置为auto,由于宽高固定,因此对应方向实现平分,可以实现水平和垂直方向上的居中。该方法适用于盒子有宽高的情况:
CSS

复制代码

.parent { position: relative; } .child { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; }

  • 利用绝对定位,先将元素的左上角通过top:50%和left:50%定位到页面的中心,然后再通过margin负值来调整元素的中心点到页面的中心。该方法适用于盒子宽高已知的情况。
CSS

复制代码

.parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; margin-top: -50px; /* 自身 height 的一半 */ margin-left: -50px; /* 自身 width 的一半 */ }

  • 使用flex布局,通过align-items:center和justify-content:center设置容器的垂直和水平方向上为居中对齐,然后它的子元素也可以实现垂直和水平的居中。该方法要考虑兼容的问题,该方法在移动端用的较多:
CSS

复制代码

.parent { display: flex; justify-content:center; align-items:center; }

flex布局理解

flex布局是CSS3新增的一种布局方式,能够根据不同屏幕尺寸的变化来自适应大小。

常用的属性:

  • flex-direction属性决定主轴的方向(即项目的排列方向)。
  • flex-wrap属性定义,如果一条轴线排不下,如何换行。
  • flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
  • justify-content属性定义了项目在主轴上的对齐方式。
  • align-items属性定义项目在交叉轴上如何对齐。
  • align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

flex: 1表示什么

flex: 1是flex-grow、flex-shrink、flex-basis的缩写,默认值是0 1 auto。flex:1也表示flex: 1 1 auto。

  1. flex-grow定义项目发大比例,默认为0,即存在剩余空间,也不放大。
  2. flex-shrink定义项目收缩比例,默认为1,即空间不足,也会进行缩小。
  3. flex-basis定义项目给上面两个属性分配多余空间之前, 计算项目是否有多余空间, 默认值为 auto, 即项目本身的大小。

对BFC的理解,如何创建BFC

BFC是块级格式上下文(Block Formatting Context,BFC),是CSS布局的一个概念,在BFC布局里面的元素不受外面元素影响。

创建BFC条件

  • 设置浮动:float有值并不为空
  • 设置绝对定位: position(absolute、fixed)
  • overfilow值为:hidden、auto、`scroll
  • display值为:inline-block、table-cell、table-caption、flex等

BFC作用

  • 解决margin重叠问题:由于BFC是一个独立的区域,内部元素和外部元素互不影响,将两个元素变为BFC,就解决了margin重叠问题
  • 创建自适应两栏布局:可以用来创建自适应两栏布局,左边宽高固定,右边宽度自适应。
  • 解决高度塌陷问题:在子元素设置浮动后,父元素会发生高度的塌陷,也就是父元素的高度为0解决这个问题,只需要将父元素变成一个BFC。

什么是margin重叠,如何解决

两个块级元素分别设置上下margin时可能会导致边距合并为一个边距,合并到边距取最大的那个值。需要注意的是,浮动的元素和绝对定位这种脱离文档流的元素的外边距不会折叠。重叠只会出现在垂直方向。

计算规则

  • 都是正数,取最大的。20px 40px ---> 40px
  • 一正一负,用正数减去负数后。20px -50px ---> -30px
  • 都是负数,用0减去两个中绝对值大的那个。-30px -10px ---> -20px

解决方案 对于重叠的情况,主要有两种:兄弟之间重叠(margin合并)父子之间重叠(margin塌陷)

  • 兄弟之间重叠 底部元素变为行内盒子:display: inline-block 底部元素设置浮动:float 底部元素的position的值为absolute/fixed
  • 父子之间重叠 父元素加入:overflow: hidden 父元素添加透明边框:border:1px solid transparent 子元素变为行内盒子:display: inline-block 子元素加入浮动属性或定位

position 常用属性 默认值是什么

  • static 默认值,没有定位,元素正常在文档流中显示
  • relative 相对定位,相对于原来的位置进行定位
  • absolute 绝对定位,相对于static定位意外以外的一个父元素进行定位。
  • fixed 绝对定位,相对于浏览器窗口
  • sticky 粘性定位,基于用户滚动位置

实现一个三角形

通过设置不同方向边框来实现

CSS

复制代码

div { width: 0; height: 0; border-top: 50px solid red; border-right: 50px solid transparent; border-left: 50px solid transparent; }

画一条0.5px的线

  • 使用transform: scale()的方式,该方法用来定义元素的2D 缩放转换:
CSS

复制代码

transform: scale(0.5,0.5);

  • 采用meta viewport的方式,这样就能缩放到原来的0.5倍,如果是1px那么就会变成0.5px。viewport只针对于移动端,只在移动端上才能看到效果。

如何解决1px

1px 问题指的是:在一些 Retina屏幕 的机型上,移动端页面的 1px 会变得很粗,呈现出不止 1px 的效果。原因很简单——CSS 中的 1px 并不能和移动设备上的 1px 划等号。

  • 直接写0.5px
  • 利用伪元素,先放大再缩小
  • 使用viewport缩放来解决


原文章链接:https://juejin.cn/post/7269794410573512758