网页基础HTML+CSS

HTML标签

  • 双标签:成对出现
  • 单标签:只有开始标签(<br>换行<hr>水平线)

HTML基本骨架

  1. <html>包含整个网页
  2. <head>网页头部,存放给浏览器的信息,如CSS,<title>
  3. <body>网页主体,用来存放给用户看的信息,如图片文字
  4. 快速生成骨架:!+Tab/Enter

标签关系

  1. 父子(html与head)
  2. 兄弟(head与body)

注释

vscode中,添加或删除注释的快捷键:CTRL+/

标签介绍

标题标签,一般用在新闻标题,文章标题等

标签名:h1~h6(双标签)

特点:文字加粗,字体逐渐减小,独占一行

经验:h1一般一个网页只用一次,其他无所谓

段落标签,一般用在成段文字,产品描述等

标签名:p(双标题)

特点:独占一行,段落间存在间隙

换行与水平标签

换行<br>水平线<hr>,由于没有内容,均为单标签。浏览器不能识别字符换行,所以需要用换行时,加入<br>即可。

文本格式化标签,为文字添加特殊格式,突出重点。

  • 加粗标签<strong>\<b>
  • 倾斜标签<em>\<i>
  • 下划线<ins>\<u>
  • 删除线<del>\<s>

均不换行

图像标签,在网页中插入图片。

标签使用:<img src="url">

  • 可选alt:替换文本,图片无法显示时显示的文字
  • 可选title:提示文本,鼠标悬停时显示的文字
  • 可选width/height:图片的宽高,值为数字,没有单位,默认等比例缩放

url以 ./ 开头,在目录中自动查找图片(.表示当前文件夹,..表示上一级文件夹,Windows默认\,其它系统/,建议/)

不换行

属性写法:写在尖括号里,标签名后面,用空格隔开,属性不区分顺序。

超链接标签,点击跳转到其他页面。

使用方法:<a href="链接"></a>

跳转到网页链接,直接放链接;跳转到另一个HTML文件,放文件的相对路径。

加入属性:target="_blank"新窗口跳转。

href="#"表示是空链接。

音频标签

使用方法:<audio src="url"></audio>

支持格式:Mp3,Ogg,Wav

属性:

  • controls显示控制面板
  • loop循环播放
  • autoplay自动播放(一般被浏览器禁用)

视频标签

使用方法:<video src="url"></video>

属性:

  • controls、loop同audio标签
  • muted静音播放
  • autoplay在静音下可以自动播放

列表 表格 表单

均为嵌套关系。

列表,布局内容排列整齐的区域。

分类:无序列表、有序列表、定义列表。

无序列表

使用:<ul>嵌套<li>,ul是无序列表,li是列表条目。

  • li中可以包裹任何内容。

有序列表

使用:<ol>嵌套<li>,ol是有序列表,li是列表条目。

定义列表,一般用在网页底部显示帮助。

使用:<dl>嵌套<dt>和<dd>,dl是定义列表,dt是定义列表的标题,dd是定义列表的描述/详情。

  • dl里只能包含dt和dd
  • dt和dd里可以包含任何内容

表格

使用:标签<table>(表)嵌套<tr>(行),<tr>嵌套<td>(内容单元)/<th>(表头单元)。

网页中表格默认没有边框,加入border属性添加边框。

表格结构标签

  • thead--表格头部
  • tbody--表格主体
  • tfoot--表格底部

结构标签非必须。

合并单元格

  • 跨行合并,保留最上的单元格,添加属性rowspan
  • 跨列合并,保留最左的单元格,添加属性colspan
  • 删除其他单元格。(要合并几个属性值为多少)

不能跨结构标签合并。

表单,收集用户信息。

input标签,type属性值不同,功能不同。

  • text--文本框,单行文本
  • password--密码框
  • radio--单选框
  • checkbox--多选框
  • file--上传文件
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页标题</title>
</head>
<body>
    文本框:<input type="text">
    <br>
    密码框: <input type="password">
    <br>
    单选框:
    <input type="radio" name="gender">男
    <input type="radio" name="gender" checked>女
    <br>
    多选框: <input type="checkbox">
    <br>
    上传文件: <input type="file" multiple>
</body>
</html>

input占位文本:添加placeholder属性,属性值为提示信息。

radio常用属性

  • name--控件名称,分组,同组只能单选
  • checked--设置默认值(多选框checkbox同理)

添加多个文件

input-type为file下添加multiple属性。

下拉菜单

使用:<select>(菜单)嵌套<option>(每一项)。

默认选中添加selected属性。

option-value属性:发送数据。

文本域,多行输入文本

使用:<textarea></textarea>

  • name、id:发送数据
  • cols、rows:设置文本域属性(一般用CSS设置,不在HTML中设置)

label标签,网页中某个标签的说明文本,可以绑定文字和控件,增大点击生效范围。

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页标题</title>
</head>
<body>
    <!--
        1. label 标签只包裹内容
        2. label 标签的 for 属性值和表单控件的 id 属性值相同
      -->
    <input type="radio" id="man">
    <label for="man">男</label>
    <!-- 
        1. 使用 label 标签包裹文字和控件,不需属性
     -->
    <label>
        <input type="radio">女
    </label> 
</body>
</html>

button标签

使用:<button type=""></button>

type属性值:

  • submit--提交按钮(默认)
  • reset--重置按钮
  • button--普通按钮,一般配合JavaScript使用

form标签,表单区域。

action属性值为发送数据的地址。

无语义的布局标签,划分网页区域,摆放内容。

  • <div>:独占一行
  • <span>:不换行

字符实体,在网页中显示预留字符。

  •   空格 &nbsp;(代码中多个键盘空格,浏览器仅识别一个)
  • < 小于号 &lt;
  • > 大于号 &gt;

例子:

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页标题</title>
</head>
<body>
    <h1>注册信息</h1>
    <form action="">
        <h2>个人信息</h2>
        <label>姓名:</label><input type="text" placeholder="输入姓名"><br><br>
        <label>密码:</label><input type="text" placeholder="输入密码"><br><br>
        <label>确认密码</label><input type="password" placeholder="确认密码"><br><br>
        <label>性别:</label>
        <label><input type="radio" name="gender">男</label>
        <label><input type="radio" name="gender" checked>女</label><br><br>
        <label>居住城市:</label>
        <select name="" id="">
            <option value="">北京</option>
            <option value="">上海</option>
            <option value="">武汉</option>
        </select><br><br>
        <label for="">工作描述:</label>
        <textarea name="" id="" cols="30" rows="10"></textarea><br><br>
        <label for=""><input type="checkbox">已阅读并同意一下协议:</label>
        <ul>
            <li><a href="#">《用户服务协议》</a></li>
            <li><a href="#">《隐私政策》</a></li>
        </ul><br><br>
        <button type="submit">免费注册</button>
        <button type="reset">重新填写</button>
    </form>
</body>
</html>

CSS

层叠样式表,用来描述HTML文档的呈现。在<title>标签下方添加<style>标签,在<style>中书写CSS代码。 

基本写法举例

内部样式表:

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页标题</title>
    <style>
        #p {
            color: red;
            font-size: 30px;
        }
    </style>
</head>
<body>
    <p id="p">体验CSS</p>
</body>
</html>

 外部样式表,css代码写在单独CSS文件中,HTML使用link引入。

<link rel="stylesheet" href="./mycss">

行内样式,配合JavaScript

<div style="color:red;font-size:20px">这是div</div>

基础选择器

选择器:查找标签,设置样式。

标签选择器

使用标签作为选择器,选中同名标签设置相同样式。

p {
    color:red;
}

类选择器

首先定义类名,再给需要的标签添加class属性。一个标签需要使用不同类,用空格隔开class属性不同类名。

//CSS文件:
.red {
    color: aqua;
}

//HTML文件
<div class="red">这是一个段落</div>

id选择器

与类选择器类似,一般配合JavaScript使用,很少用来设置CSS样式。

//CSS文件:
#red {
    color: aqua;
}

//HTML文件
<div id="red">这是一个段落</div>

同一个id选择器在一个页面只能使用一次。 

通配符选择器

查找页面所有标签,设置相同样式。(不需要调用,浏览器自动设置)

* {
    color: aqua;
}

文字控制属性

  • font-size:字体大小(常用单位px)
  • font-weight:字体粗细(数字(原400)或关键字normal/bold)
  • font-style:字体倾斜(关键字normal/italic)
  • line-height:行高,设置多行文本间距(数字+px/倍数)。垂直居中:行高等于盒子高度
  • font-family:字体族,属性值为字体名(不用加引号,建议无衬线字体)
  • font:字体复合属性,必须写字号与字体,简写,适合设置网页文字公共样式
  • text-indent:文本缩进,属性值为数字+px/数字+em(当前标签字号大小)
  • text-align:文本/图片对齐,属性值left、center、right
  • text-decoration:修饰线(none/underline/line-through/overline)
  • color:颜色,属性值支持:单词、rgb(,,)、rgba(,,,)、#十六进制

调试工具-Google Chrome

  • 检查
  • 选中工具

复合选择器

由两个或多个基础选择器,通过不同方式组合而成,能更精确高效地寻找目标标签。

后代选择器,选中某元素的所有后代元素。父子选择器空格隔开。

div span{
    color:red;
}

子代选择器,父子选择器用>隔开。

div > span{
    color:red;
}

并集选择器,选中多组标签设置相同的样式,选择器之间用逗号隔开。

div,
p,
span{
    color:red;
}

交集选择器,选中同时满足多个条件的元素,选择器之间连写,没有任何符号。

p.box {
    color: red;
}

伪类选择器,伪类表示元素状态,选中元素的某个状态设置样式。

鼠标悬停:选择器:hover{}

a:hover{
    color:red;
}

伪类-超链接:

  • :link 访问前
  • :visited 访问后
  • :hover 悬停
  • :active 点击时

注意要按lvha顺序书写。

CSS特性

继承性,子级默认继承父级文字控制属性。例如工作中给<body>设置属性,则所有文字可以享受属性,但是如果有标签有默认样式或者另外设置了样式,则不会继承父级相应属性。

层叠性,相同属性后定义的覆盖前定义的,不同属性会叠加生效。

优先级,当一个标签选择多种选择器,基于不同种类的选择器的匹配规则。

通配符选择器<标签选择器<类选择器<id选择器<行内样式<!important

* {
    color: red !important;
}

(选择器范围越大,优先级越低)

如果是复合选择器,则需要权重叠加计算。从优先级高到低比较个数,同一级个数多的优先级高,个数相同向后比较。

继承权重最低,!important权重最高。

/* (0, 0, 2, 1) */
.c1 .c2 div{
    color: blue;
}
/* (0, 1, 0, 1) */
div #box{
    color: green;
}
/* (0, 1, 1, 0) */
#box .c3{
    color: orange;
}

Emmset写法

代码简写方式,输入缩写VS code自动生成代码。

HTML

  • 类选择器     <div class="box"></div>        标签名.类名
  • id选择器    <div id="id"></div>        标签名#id名
  • 同级标签     <div></div><p></p>        div+p
  • 父子级标签    <div><p></p></div>        div>p
  • 多个相同标签    <span></span><span></span>        span*2
  • 有内容的标签    <div>neirong</div>        div{neirong}

CSS

大多数简写方式为属性单词首字母

w500+h200+bgc

.c3{
    width: 500px;
    height: 200px;
    background-color: #fff;
}

背景属性

背景图,装饰性的图片效果

background-image(bgi)

  • 背景图url
div{
    width: 400px;
    height: 400px;
    background-image: url(./images/background);
    background-repeat: no-repeat;
    background-position: left top;(0 0)
    background-size: 100%;
    background-attachment: fixed;
}

默认平铺复制。文字在上,图片在下

background-repeat(bgr)

  • no-repeat 不平铺(默认左上角)
  • repeat 平铺
  • repeat-x 水平方向平铺
  • repeat-y 垂直方向平铺

background-position(bgp):第一个值表示水平方向,第二个值是垂直方向。只写一个值,另外一个默认居中。

关键字:

  • left 左
  • right 右
  • center 居中
  • top 顶部
  • bottom 底部

坐标:数字+px,正负均可。

background-size(bgz)

  • cover 放大至完全覆盖盒子 可能图片显示不全
  • contain 放大至一边贴合 可能留白
  • 百分比 100%图片宽度跟盒子宽度一样,图片高度按等比例缩放
  • 数字+单位

background-attachment(bga)

  • fixed 固定

background(bg):背景复合属性,空格隔开各个属性值,不区分顺序。背景图缩放加/

div{
    background: pink url(./images/) no-repeat center bottom/cover;
}

显示模式

标签的显示方式,根据标签的显示模式选择合适的显示模式。

块级元素

  • 独占一行
  • 宽度默认父级的100%
  • 添加宽高属性生效 
  • 如div

行内

  • 一行共存多个
  • 宽高属性不生效
  • 宽高由内容生效
  • 如span

行内块

  • 一行共存多个
  • 宽高属性生效
  • 宽高默认由内容撑开
  • 如image

转换显示模式

  • block 块级
  • inline-block 行内块
  • inline 行内
div{
    width: 400px;
    height: 200px;
    display: inline;
}

结构伪类选择器

根据元素的结构关系查找元素。

  • E:first-child 查找第一个元素
  • E:last-child 查找最后一个元素
  • E:nth-child(N) 查找第N个元素(第一个N为1)

:nth-child(公式)

  • 2n 偶数标签
  • 2n+1;2n-1 奇数标签
  • 5n 5倍数标签
  • n+5 第5个以后的标签
  • -n+5 第5个以前的标签

伪元素选择器

创建虚拟元素(伪元素),用来摆放装饰性内容。

  • E::before 在E元素里面最前面添加一个伪元素
  • E::after 在E元素里面最后面添加一个伪元素
  • 必须设置cotent:""属性,用来设置伪元素内容,如果没有内容,引号留空即可
  • 伪元素默认是行内显示模式
  • 权重和标签选择器相同
div::before{
    content: "love";
}

PxCook

支持PSD文件的文字、颜色、距离自动识别。

盒子模型

盒子模式重要组成部分

  • 内容区域 - width&height
  • 内边距 - padding(内容与盒子边缘之间)(pd)
  • 边框线 - border(bd)
  • 外边距 - margin(出现在盒子外面) (mg)
div{
    width: 300px;
    height: 300px;
    background-color: #fff;
    padding: 20px;
    border: 1px solid #000;
    margin: 50px;
}

Google浏览器检查里计算样式可看到效果。

margin

  • solid 实线
  • dashed 虚线
  • dotted 点线

border-方位名词(bdl、bdr,bdt,bdb),设置不同方向的样式。

padding-方位名词(pdl等),设置不同方向的内边距。

padding多值写法:

  • 一个值 四个方向一样
  • 两个值 上下一样,左右一样
  • 三个值 左右一样,跟上下分别不一样
  • 四个值 四个方向均不一样

记忆:顺时针,没有数值就和对向一样。

尺寸计算

默认盒子尺寸=内容+border+padding

  • 手动减法,减掉border、padding尺寸
  • 内减模式:box-sizing:border-box

外边距margin

拉开两个盒子的距离,与padding写法含义相同。居中:margin: 0 auto;要求盒子有宽度。

清除默认样式

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

元素溢出 overflow

控制溢出元素的内容的显示方式。

  • hidden 溢出隐藏
  • scroll 溢出滚动(无论是否溢出)
  • auto (溢出滚动)

外边距问题-合并

垂直排列的兄弟元素,上下margin合并,取较大值生效。

外边距问题-塌陷

父子级标签,子级的添加上外边距会产生塌陷问题。

  • 取消自己margin,父级设置padding
  • 父级设置overflow:hidden
  • 父级设置border-top

行内元素-内外边距问题

行内元素添加margin和padding,无法改变元素垂直位置;给行内元素添加line-height可以改变垂直位置。

盒子模型-圆角

border-radius 设置元素外边框为圆角,属性值数字+px/半分比(最大值50%),设置圆角半径。 从左上角顺时针赋值,没有取值的角与对角相同。

胶囊形状--给长方形盒子的圆角属性值设置为高度的一半。

盒子模型-阴影

box-shadow 给元素设置阴影效果,属性值X轴偏移量 Y轴偏移量 模糊半径 扩散半径 颜色 内外阴影。

position定位属性

static:HTML元素的默认定位方式,不受top/bottom/left/right等元素的影响。不以任何特殊方式定位,根据页面正常流进行定位。

relative:相对于正常元素进行定位。设置相对定位的元素的 top、right、bottom 和 left 属性将导致其偏离其正常位置进行调整。不会对其余内容进行调整来适应元素留下的任何空间。

fixed:相对于视口进行定位。元素会被移出正常文档流,并不为元素预留空间。 top、right、bottom 和 left 属性用于定位此元素。元素的位置在屏幕滚动时不会改变。当元素祖先的transform、perspective、filter或 backdrop-filter属性非 none时,容器由视口改为该祖先。

absolute:相对于最近的定位祖先元素进行定位。然而,如果绝对定位的元素没有祖先,它将使用文档主体(body),并随页面滚动一起移动。

sticky:粘性元素根据滚动位置在相对(relative)和固定(fixed)之间切换。起先它会被相对定位,直到在视口中遇到给定的偏移位置为止 - 然后将其"粘贴"在适当的位置(比如 position:fixed)。

grid:网格布局

标准流

也指文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。

浮动

让块元素水平排列。

  • float:left 左看齐
  • float:right 右看齐

code.html

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页标题</title>
    <link rel="stylesheet" href="./mycss.css">
</head>
<body>
    <div class="product">
        <div class="left"></div>
        <div class="right">
            <ul>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div>
    </div>
</body>
</html>

mycss.css

.left{
    float: left;
    width: 234px;
    height: 628px;
    background: skyblue;
}

.right{
    float: right;
    width: 978px;
    height: 628px;
    background-color: brown;
}

.right li{
    float: left;
    margin-right: 14px;
    margin-bottom: 14px;
    width: 234px;
    height: 300px;
    background-color: orange;
}

.product{
    margin: 50px auto;
    width: 1226px;
    height: 628px;
    background-color: pink;
}

li{
    list-style: none;
}

*{
    margin: 0;
    padding: 0;
}

.right li:nth-child(4n){
    margin-right: 0;
}

浮动后盒子脱标。 

清除浮动:浮动元素会脱标,如果父级没有高度,自己无法撑开父级高度。解决:清除浮动。

  • 在父元素内容最后添加一个块级元素,设置CSS属性clear:both,可以清除左右两侧影响。
  • 在父元素内容最后添加一个伪元素,添加
    .clearfix::after{
        content: "";
        display: block;
        clear: both;
    }
  • 双伪元素发在前后添加伪元素,添加
    .clearfix::before,
    .clearfix::after {
        content: "";
        display: table;
    }
    
    .clearfix::after {
        clear: both;
    }
  • overflow 父元素添加CSS属性overflow:hidden

Flex布局

Flex布局即弹性布局,是浏览器提倡的布局模型,适合结构化,提供了强大的空间分布对齐能力,不会产生脱标现象,更简单更灵活。

弹性盒子主轴宽度默认为内容宽度,侧轴宽度默认为弹性容器宽度。

组成

  • 弹性容器
  • 弹性盒子(沿主轴方向排列)
  • 主轴默认在水平方向
  • 侧轴/交叉轴默认在垂直方向。

父元素设置display:flex,创建Flex容器

主轴对齐方式 justify-content

  • flex-start 默认值,弹性盒子从起点依次排列。
  • flex-end 弹性盒子从终点一次排列。
  • center 弹性盒子沿主轴居中排列。
  • space-between 弹性盒子沿主轴均匀排列,空白均分于弹性盒子之间。
  • space-around 弹性盒子沿主轴均匀排列,空白均分于弹性盒子两侧。
  • space-evenly 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等。

侧轴对齐方式 align-items

控制当前弹性容器内所有弹性盒子的侧轴对齐方式

  • scretch 弹性盒子沿侧轴被拉伸至铺满容器(盒子没有设置尺寸才能拉伸)
  • center 弹性盒子沿侧轴居中排列
  • flex-start 弹性盒子从起点沿侧轴排列
  • flex-end 弹性盒子从终点沿侧轴以此排列 

某个弹性盒子侧轴对齐 align-self

控制弹性盒子,用法与align-items一样。  

  • scretch 弹性盒子沿侧轴被拉伸至铺满容器(盒子没有设置尺寸才能拉伸)
  • center 弹性盒子沿侧轴居中排列
  • flex-start 弹性盒子从起点沿侧轴排列
  • flex-end 弹性盒子从终点沿侧轴以此排列 

修改主轴方向 flex-dirction

  • column 垂直方向,从上到下 

弹性伸缩比 flex

控制弹性盒子的主轴方向的尺寸。属性值为整数,表示占用父级剩余尺寸的份数。

弹性盒子换行 flex-wrap

  • wrap 换行
  • nowrap 不换行(默认) 

行对齐方式 align-content

与主轴对齐属性值用法相同。

  • flex-start 默认值,弹性盒子从起点依次排列。
  • flex-end 弹性盒子从终点一次排列。
  • center 弹性盒子沿主轴居中排列。
  • space-between 弹性盒子沿主轴均匀排列,空白均分于弹性盒子之间。
  • space-around 弹性盒子沿主轴均匀排列,空白均分于弹性盒子两侧。
  • space-evenly 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等。

 学成在线项目

项目目录

>study 主目录

       >images 存放固定使用的图片素材

       >uploads 存放非固定使用的图片素材

       >css 存放CSS文件

               >base.css 基础公共样式

               >index.css首页CSS样式

       >index.html 首页HTML文件

网页制作思路

  • 布局思路:先整体后局部,从外到内,从上到下,从左到右。
  • CSS思路:画盒子、调整位置、控制样式。

logo制作思路

logo功能:

  • 点击跳转首页
  • 提升搜索引擎排名

实现:

标签结构:h1>a>网站名(搜索关键字)

导航制作技巧(nav)

导航功能:

  • 单击跳转页面

实现方法:

  • 标签结构:ul>li*3>a

避免堆砌a标签,是网站搜索排名降级。

搜索区域(search)

实现方法:

  • 标签结构:.search>input+a/button

用户区域(user)

实现方法:

标签结构:.user>a>img+span

banner区域

结构:通栏banner>版心>.left+.right

左侧侧导航(left)

实现方法:

  • 标签结构:.left>ul>li*9>a

布局思路

  • a默认状态:背景图为白色右箭头

右侧课程表(right)

实现方法:

  • 标签结构:.right>h3+.content

精品推荐(recommend)

实现方法:

标签结构:.recommend>h3+ul+a.modify

布局思路:flex

精品课程(course)

实现方法:

标签结构:.hd+.bd

布局思路

盒子模型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值