HTML+CSS基础知识【1】

目录

1、CSS选择器

 2、link标签常用场景

3、边距与table的border-collapse

4、伪类、伪元素

5、块元素、内联元素、浮动、文档流

5.1 display属性

6、css中auto的用法、居中对齐

7、CSS常用开发

7.1、图片、动画常用设置

7.2、文本设置

7.3、鼠标常用设置

8、px、em、rem之间的换算

9、position属性


1、CSS选择器

基本选择器【要注意权值】

层次选择器 

锚点伪类选择器

a:link {color:} /* 未访问的链接 */
a:visited {color:} /* 已访问的链接 */
a:hover {color:} /* 鼠标划过链接 */
a:active {color:} /* 已选中的链接 */
/*
元素:hover 表示聚焦后改变自己

元素:hover 元素 表示聚焦后改变其子元素

元素:hover + 元素 表示聚焦后改变其指定的“亲兄弟”(条件是该兄弟元素与其相邻)元素

元素:hover ~ 元素 表示聚焦后改变其指定的兄弟元素,两个元素相不相邻都行。
 */

属性选择器 

结构伪类选择器 

 

 2、link标签常用场景

<link rel="stylesheet" href="https://example.com/styles.css">
//链接到一个CSS层叠样式表
 
<link rel="canonical" href="URL.html">
//SEO优化:重定向
 
<link rel="shortlink" href="https://example.com/?p=42">
//之前用于包含icon的链接(已被废弃不再使用)
 
<link rel="amphtml" href="https://example.com/path/to/amp-version.html">
//链接到当前文档的一个 AMP HTML 版本
 
<link rel="manifest" href="manifest.json">
//链接到一个指定Web应用程序“安装”证书的JSON文件
 
<link rel="author" href="humans.txt">
//链接到文档的作者
 
<link rel="license" href="copyright.html">
//指向一个适用于链接内容的版权申明
 
<link rel="alternate" href="https://es.example.com/" hreflang="es">
//给出可能的你的另一种语言的文档位置参考
 
<link rel="me" href="https://google.com/profiles/thenextweb" type="text/html">
<link rel="me" href="mailto:599729022@qq.com">
<link rel="me" href="sms:+599729022">
//提供作者或其他的信息
 
<link rel="archives" href="https://example.com/archives/">
//链接到一个描述历史记录、文档或其他具有历史意义的材料的集合的文档
 
<link rel="index" href="https://example.com/">
//链接到层次结构中的顶级资源
 
<link rel="self" type="application/atom+xml" href="https://example.com/atomFeed.php?page=3">
//给出一个自我参考,当文档有多个可能的参考时非常有用
 
<link rel="first" href="https://example.com/atomFeed.php">
<link rel="next" href="https://example.com/atomFeed.php?page=4">
<link rel="prev" href="https://example.com/atomFeed.php?page=2">
<link rel="last" href="https://example.com/atomFeed.php?page=147">
//分别是在一系列文件中的第一个、下一个、上一个和最后一个
 
<link rel="EditURI" href="https://example.com/xmlrpc.php?rsd" type="application/rsd+xml" title="RSD">
//当使用第三方服务来维护 blog 时使用
 
<link rel="pingback" href="https://example.com/xmlrpc.php">
//当另一个 WordPress 博客链接到你的 WordPress 博客或文章时形成一个自动化的评论
 
<link rel="webmention" href="https://example.com/webmention">
//当你在自己的页面上链接到一个URL时通知它
 
<link rel="import" href="/path/to/component.html">
//加载一个外部的HTML文件到当前HTML文件中
 
<link rel="search" href="/open-search.xml" type="application/opensearchdescription+xml" title="Search Title">
//打开搜索
 
<link rel="alternate" href="https://feeds.feedburner.com/example" type="application/rss+xml" title="RSS">
<link rel="alternate" href="https://example.com/feed.atom" type="application/atom+xml" title="Atom 0.3">
//Feeds
 
<link rel="dns-prefetch" href="//example.com/"> 
<link rel="preconnect" href="https://www.example.com/"> 
<link rel="prefetch" href="https://www.example.com/"> 
<link rel="prerender" href="https://example.com/"> 
<link rel="preload" href="image.png" as="image"> 
//预取、预载、预浏览
 
<link rel="icon" href="favicon.ico" type="image/x-icon" />
//网页加入图标
 
<link rel="Bookmark" href="favicon.ico">
//收藏夹中显示的图标
 
<link rel="canonical" href="http://example.com/article.html">
//用于该文章的样式
 
<link rel="mask-icon" href="path/to/icon.svg" color="red">
//固定网站(Apple Safari浏览器)
 
<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/APP_ID">
//禁用翻译提示(Google Chrome浏览器)
 
<link rel="manifest" href="manifest.json">
//链接到一个 manifest 并定义 manifest 的源数据
//manifest.json 中的例子也可以通过以下链接找到(Google Chrome Mobile 针对 Android)
 
<link rel="icon" sizes="192x192" href="highres-icon.png">
//主屏幕图标(Google Chrome Mobile 针对 Android)

3、边距与table的border-collapse

/*
语法:
border-collapse : separate | collapse
取值:
separate : 默认值。边框独立(标准HTML)
collapse : 相邻边被合并

当border-collapse设置为collapse时,表格自身的border与cellspacing属性便没有作用了。
border-collapse
 */
/*
    内边距
        padding
        padding-top
        padding-right
        padding-bottom
        padding-left

    内边距是元素的内容与边框(border)之间的距离
    padding: 
    如果 padding 属性缺失 bottom、left; bottom 会参考 top, left 会参考 
    外边距
        margin
        margin-top
        margin-right
        margin-bottom
        margin-left

    外边距是元素的边框外的距离,用来设置两个元素之间的距离间隔,也用来实现元素的居中
    marign:0 auto;
    但需要一个条件,那就是该元素的上级一定要设置text-align:center内容居中属性样式。

 */

4、伪类、伪元素

伪类:用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。

伪元素:用于创建一些不在文档树中的元素,并为其添加样式。

  伪类的分类:状态伪类和结构性伪类
  常见的状态伪类主要包括:

  :link 应用于未被访问过的链接;    
  :hover 应用于鼠标悬停到的元素;
  :active 应用于被激活的元素;
  :visited 应用于被访问过的链接,与:link互斥。
  :focus 应用于拥有键盘输入焦点的元素。

   结构性伪类:是css3新增选择器,利用dom树进行元素过滤,通过文档结构的互相关系来匹配元素,能够减少class和id属性的定义,使文档结构更简洁。
   常见的结构性伪类包括:

  :first-child 选择某个元素的第一个子元素;  
  :last-child 选择某个元素的最后一个子元素;
  :nth-child() 选择某个元素的一个或多个特定的子元素;
  :nth-last-child() 选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;
  :nth-of-type() 选择指定的元素;
  :nth-last-of-type() 选择指定的元素,从元素的最后一个开始计算;
  :first-of-type 选择一个上级元素下的第一个同类子元素;
  :last-of-type 选择一个上级元素的最后一个同类子元素;
  :only-child 选择的元素是它的父元素的唯一一个子元素;
  :only-of-type 选择一个元素是它的上级元素的唯一一个相同类型的子元素;
  :empty 选择的元素里面没有任何内容。
  :checked匹配被选中的input元素,这个input元素包括radio和checkbox。
  :default匹配默认选中的元素,例如:提交按钮总是表单的默认按钮。
  :disabled匹配禁用的表单元素。
  :enabled匹配没有设置disabled属性的表单元素。
  :valid匹配条件验证正确的表单元素。

常见的伪元素选择器:
  ::first-letter 选择元素文本的第一个字(母)。
  ::first-line 选择元素文本的第一行。
  ::before 在元素内容的最前面添加新内容。
  ::after 在元素内容的最后面添加新内容。
  ::selection匹配用户被用户选中或者处于高亮状态的部分
  ::placeholder匹配占位符的文本,只有元素设置了placeholder属性时,该伪元素才能生效


应用: 

/*伪元素的应用:
清除浮动:如果父元素的所有子元素都是浮动的,父元素的高度则无法撑开。可以通过对父元素添加after伪类撑开父元素高度,因为after就是其最后一个子元素。
代码如下:*/

.clear::after {
    content: '';
    display: block;
    clear: both;
}
/*画分割线:画一条如下的分割线
代码如下:*/

<style>
    * {
      padding: 0;
      margin: 0;
    }
    .spliter::before, .spliter::after {
      content: '';
      display: inline-block;
      border-top: 1px solid black;
      width: 200px;
      margin: 5px;
    }
  </style>
</head>
<body>
  <p class="spliter">分割线</p>
</body>
/*计数器:使用CSS实现计数器,用到的属性有
counter-reset: 属性设置某个选择器出现次数的计数器的值。默认为 0。
counter-increment: 属性设置某个选取器每次出现的计数器增量。默认增量是 1。
content: 插入生成内容。
代码如下:*/

<style>
    .chooses {
      counter-reset: letters;
    }
    .chooses input:checked {
      counter-increment: letters;
    }
 
    .choose span::after {
      content: counter(letters);
    }
  </style>
</head>
<body>
  <div class="chooses">
    <input type="checkbox">a
    <input type="checkbox">b
    <input type="checkbox">c
    <input type="checkbox">d
    <input type="checkbox">e
    <input type="checkbox">f
    <input type="checkbox">g
    <input type="checkbox">h
    <input type="checkbox">i
    <input type="checkbox">j
  </div>
  <p class="choose">我选择了<span></span>个字母</p>
</body>

5、块元素、内联元素、浮动、文档流

块级元素诸如段落<p>、标 题<h1><h2>…、列表。<ul><ol><li> 、表格<table>、表单<form>、DIV<div>和BODY<body>等元素。
而内联元素则如: 表单元素<input>、超级链接<a>、图像<img>、<span> ……
block(块)元素的特点:【block元素才能使用margin:0 auto 居中对齐】
	①总是在新行上开始;
	②高度,行高以及外边距和内边距都可控制;
	③宽度缺省是它的容器的100%,除非设定一个宽度。
	④它可以容纳内联元素和其他块元素

inline元素的特点:
	①和其他元素都在一行上;
	②高,行高及外边距和内边距不可改变;
	③宽度就是它的文字或图片的宽度,不可改变
	④内联元素只能容纳文本或者其他内联元素

相对定位, 即相对于元素在文档流中位置进行偏移。 但保留原占位。

绝对定位, 即完全脱离文档流, 相对于position属性非static值的最近父级元素进行偏移。

文档流
【有三种情况将使得元素脱离文档流而存在,分别是浮动,绝对定位, 固定定位。 但是在IE中浮动元素也存在于文档流中。】
	将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。
	每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端。 若当前行容不下, 则另起新行再浮动。
	内联元素不会独占一行。 
	几乎所有元素(包括块级,内联和列表元素)均可生成子行, 用于摆放子元素。

5.1 display属性


1、display:inline
  此元素会被显示为内联元素,元素前后没有换行符,即display:inline的作用即可以将一个块级元素转换成行内元素,
	那么这个块级元素将不能再设置宽和高以及上下方向的margin和padding。
	
2、display:block
  该属性会把元素转换为块级元素,此元素前后会带有换行符,因此就可以设置元素的宽高和上下的margin和padding

3、display:inline-block
  设置了inline-block属性的元素既具有block元素可以设置width和height属性的特性,又保持了inline元素不换行的特性
	例如ul li a 标签组合float:left做成的横向导航用display:inline-block属性就可以完成:

3、display:flex【默认主轴水平排列】
	采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。
	它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”
	设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

	它可以用于以下四个方面:
	1、在不同方向排列元素
	2、重新排列元素的显示顺序
	3、更改元素的对齐方式
	4、动态地将元素装入容器

	容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,
	结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
	项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

容器的属性
#justify-content justify-content属性定义了项目在主轴上的对齐方式。

	它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。
	flex-start(默认值):左对齐
	flex-end:右对齐
	center: 居中
	space-between:两端对齐,项目之间的间隔都相等。
	space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

#align-items 属性定义项目在交叉轴上如何对齐。

	它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。
	flex-start:交叉轴的起点对齐。
	flex-end:交叉轴的终点对齐。
	center:交叉轴的中点对齐。
	baseline: 项目的第一行文字的基线对齐。
	stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

6、css中auto的用法、居中对齐


margin-left:auto是右对齐,而margin-right:auto;是左对齐,margin:0 auto居中对齐并不是我打错了,它就是这样。
这三个与margin有关的auto是用来对齐元素的

1.该元素必须是区块
	块区元素可以使用margin:0 auto;<img> <embed> <span>等等这些不是区块,是内联,使用了也没有效果。
	(如果想让他们对齐可以手动将他们变为区块,display:block;)
2.该元素需要设置宽度,如果不设置宽度,则默认宽度为width:auto;,
	你只需要记住,如果不设宽度,很多情况该区块的宽度会与父元素的宽度一样,这样就无所谓左对齐右对齐或居中对齐了,
	因为该元素会一直占据着整个父元素的宽度。只有当该元素的宽度小于父元素的宽度时候,才能看出左对齐,右对齐和居中对齐的效果。

#{margin: 0 auto;} //auto就是根据浏览器的渲染而给她赋值
	根据 上右下左的顺序,完整的代码应该是#{margin: 0 auto 0 auto;} 
	这个原理是盒子模型的顺序,意思是:盒子的上下边距是0,左右是auto,这样,就实现了盒子居中了。

	一个区块设置为width:auto;之后,会根据父元素的width,该元素本身的margin,该元素本身的border,该元素本身的padding来一起决定该元素的width。 
	换句话说,该元素的width+padding*2+border*2+margin*2 = 父元素的width





7、CSS常用开发

7.1、图片、动画常用设置

/*
文字默认大小 8px
 */
//图片常用设置============================================================================== 
//动画效果 
	如果transform简写形式,必须先移动,后旋转【一般z轴移动的是 需要先旋转转在移动的 如旋转木马案例】
	做3D动画必须给父亲加透视【画面更富3D感】和3d效果保留【出现3D操作效果】
#	{perspective:XXpx 	transform-style:preserve-3d}
#	{transform: translateY(50%) rotateX(-80deg)}【注意transform:translateZ()中只能写XX px】
	过渡效果是谁做过渡给谁加
#	transition:属性 花费时间 运动曲线 延迟多久
//整体旋转效果要选择好旋转中心点,不然是会歪的
 
 
 //radius 弧形边框
  img {
	  border-radius:50%;/*边框变圆形*/ 
	  border-radius:7px;//边框变圆润
	  border:1px dashed pink;
  }
 
//伪元素是内联元素,没有大小的,要设置width height的话,需要进行转换 方法有两种	
 1、子绝父相 其中绝对定位不要忘了要使用top right定位  和自己的宽高
 2、display:block
 
//溢出隐藏 
 div {overflow: hidden;}
 
//隐藏旋转 div 元素的背面::
div
{
    backface-visibility:hidden;
    -webkit-backface-visibility:hidden; /* Chrome 、Safari */
    -moz-backface-visibility:hidden; /* Firefox */
    -ms-backface-visibility:hidden; /* Internet Explorer */
}
 
//在一个div元素中设置多个背景图像(并指定他们的位置):
body
{ 
    background: #00ff00 url('smiley.gif') no-repeat fixed center; 
}

	background-color	指定要使用的背景颜色	
	background-position	指定背景图像的位置	
		值	描述
		left top
		left center
		left bottom
		right top
		right center
		right bottom
		center top
		center center
		center bottom	如果仅指定一个关键字,其他值将会是"center"
		x% y%	第一个值是水平位置,第二个值是垂直。左上角是0%0%。右下角是100%100%。如果仅指定了一个值,其他值将是50%。
		xpos ypos	第一个值是水平位置,第二个值是垂直。左上角是0。
	background-size	指定背景图片的大小	
	background-repeat	指定如何重复背景图像	
		repeat	背景图像将向垂直和水平方向重复。这是默认
		repeat-x	只有水平位置会重复背景图像
		repeat-y	只有垂直位置会重复背景图像
		no-repeat	background-image 不会重复
		inherit	指定 background-repeat 属性设置应该从父元素继承
	background-attachment	设置背景图像是否固定或者随着页面的其余部分滚动。
		scroll	背景图片随着页面的滚动而滚动,这是默认的。
		fixed	背景图片不会随着页面的滚动而滚动。
		local	背景图片会随着元素内容的滚动而滚动。
		initial	设置该属性的默认值。
		inherit	指定 background-attachment 的设置应该从父元素继承。 阅读关于 inherit 内容	
	background-image	指定要使用的一个或多个背景图像
	
//设置图像的 z-index:
img
{
    position:absolute;
    left:0px;
    top:0px;
    z-index:-1;
}
	拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面,高的遮挡低的。默认为0
 
//添加阴影
div
{
    box-shadow: 10px 10px 5px #888888;
}
	box-shadow: h-shadow v-shadow blur spread color inset;
		h-shadow	必需的。水平阴影的位置。允许负值
		v-shadow	必需的。垂直阴影的位置。允许负值
		blur	可选。模糊距离
		spread	可选。阴影的大小
		color	可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表
		inset	可选。从外层的阴影(开始时)改变阴影内侧阴影

//透明度
div
{
    opacity:0.5;
}
	值		描述
	value	指定不透明度。从0.0(完全透明)到1.0(完全不透明)
	inherit	Opacity属性的值应该从父元素继承

7.2、文本设置

//文本、表格常用设置============================================================================== 
//文本不会被挤到下一行
规定段落中的文本不进行换行:
p
{
    white-space:nowrap;
}
 
//设置行高 不同行文字基线与基线的距离
 div {line-height:XX px/inherit}
	若想要垂直方向居中,line-geight设为盒子的height
	
//list-style 简写属性在一个声明中设置所有的列表属性。
ul/li {
	list-style:list-style-type list-style-position list-style-image
}
	list-style-type, list-style-position, list-style-image.
		none	无标记。
		disc	默认。标记是实心圆。
		circle	标记是空心圆。
		square	标记是实心方块
//li加浮动后,ul高度坍塌解决
	若ul高度没有指定,是靠li撑起来的,则在li添加浮动后,ul会高度坍塌。
 ul::after {
      clear: both;
      display: block;
      content: "";
    }
    ul li {
      float: left;
      width: 60px;
      height: 35px;
      list-style: none;
    }

7.3、鼠标常用设置

//鼠标常用设置============================================================================== 
//鼠标变小手
 div {cursor:pointer}
//active
	 :active 伪类匹配被用户激活的元素。它让页面能在浏览器监测到激活时给出反馈。当用鼠标交互时,
	 它代表的是用户按下按键和松开按键之间的时间。
	 :active 伪类一般被用在 <a> 和 <button> 元素中. 这个伪类的一些其他适用对象包括包含激活元素的元素,
	以及可以通过他们关联的<label>标签被激活的表格元素。
	这个样式可能会被后声明的其他链接相关的伪类覆盖,这些伪类包括 :link,:hover 和 :visited。
	为保证样式生效,需要把 :active 的样式放在所有链接相关的样式之后。
	这种链接伪类先后顺序被称为 LVHA 顺序::link — :visited — :hover — :active。
	
##	<p>
	  <a href="#">This link will turn red while you click on it.</a>
	</p>
	CSS:
	a:link { color: blue; }          /* 未访问链接 */
	a:visited { color: purple; }     /* 已访问链接 */
	a:hover { background: yellow; }  /* 用户鼠标悬停 */
	a:active { color: red; }         /* 激活链接 */

8、px、em、rem之间的换算

rem是相对于根元素<html>的font-size,这样就意味着,我们只需要在根元素确定一个参考值,这个参考值设为多少,由我们来定
我们知道,浏览器默认的字号是16px,如果css里面没有设定html的font-size,则默认浏览器以1rem=16px来换算。
	注意:任意浏览器的默认字体都是16px。所有未经调整的浏览器都符合1rem=16px
	所以假定我们让一个div的宽度为2em,那么把它换算成px,width:32px,
	同理,假如一个设计稿为宽度48px,高度为60px,则换算成rem就是width=48/16=3rem,height=60/16=3.75rem
	当然如果我们在css中设置了html根元素的font-size的值,
	如下所示(为了方便计算,时常将在<html>元素中设置font-size:值为62.5%,也就是16*62.5%=10px)

html{font-size:10px}
	那么后面的css里面的rem值就以1rem =10px来换算
	所以假定我们让一个div的宽度为2em,那么把它换算成px,width:20px,同理,假如一个设计稿为宽度48px,高度为60px,则换算成rem就是width=48/10=4.8rem,height=60/10=6rem

9、position属性

static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。
 relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其 
        层叠通过z-index属性定义。
 absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z- 
        index属性定义。
 fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条 
        时,对象不会随着滚动。而其层叠通过z-index属性定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值