网页,交由浏览器运行的程序
组成:HTML CSS JavaScript
开发前准备:
浏览器分类:
或
<html>
<head>
<title>我的第一个网页title>
<meta charset="utf-8">
<meta name="Generator" content="">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
head>
<body>
网页主体:所有给用户看的内容都应该写在body中,会渲染在浏览器窗口中
body>
html>
<h1 align="center">一级标题h1>
<h2>二级标题h2>
<h3>三级标题h3>
<h4>四级标题h4>
<h5>五级标题h5>
<h6>六级标题h6>
<h7 aa="bb">自定义h7>
<p>段落文本p>
<span>spanspan>
<label>labellabel>
<b>bold加粗b>
<br>
<hr>
<strong>strong加粗strong>
<i>italic斜体i>
<u>underline下划线u>
<--'<'
>--'>'
©--版权符号©
¥--人民币符号‘¥’
--空格
<div>导航栏div>
<div>页面主体div>
<div>页面底部div>
<ol type="a">
<li>list item1li>
<li>list item2li>
ol>
<ul type="XXX">
<li>list item1li>
<li>list item2li>
ul>
<ul>
<li>
西游记
<ol>
<li>大师兄li>
<li>二师兄li>
<li>沙师弟li>
<li>唐僧li>
ol>
li>
ul>
<img src="happy.jpg" width="300px">
<img src="happy.jpg" width="300px" height="300px">
<a href="04_img.html" target="_blank">图片文件a>
<a href="http://www.baidu.com">百度a>
<a href="04_img.html">
<img src="happy.gif">
a>
<a href="">a>
<a href="#">a>
<a href="javascript:void(0)">a>
<a href="#5">点击跳转至页面指定位置a>
<a name="5">跳转至此处a>
<table border="1px" width="500px" height="500px">
<tr>
<th>姓名th>
<th>年龄th>
<th>班级th>
tr>
<tr>
<td>老齐td>
<td>30td>
<td>001td>
tr>
<tr>
<td>小泽td>
<td>32td>
<td>002td>
tr>
table>
<table border="1px" width="300px" height="300px">
<tr>
<td colspan="2">示例td>
<td>示例td>
tr>
<tr>
<td>示例td>
<td rowspan="2">示例td>
<td>示例td>
tr>
<tr>
<td>示例td>
<td>示例td>
tr>
table>
<table border="1px" width="300px" height="300px">
<thead>
<tr>
<th>姓名th>
<th>年龄th>
tr>
thead>
<tfoot>
<tr>
<td colspan="2">合计:td>
tr>
tfoot>
<tbody>
<tr>
<td>LQtd>
<td>30td>
tr>
<tr>
<td>LQtd>
<td>30td>
tr>
tbody>
table>
<form action="/login" method="get" enctype="">
<p>
用户姓名:<input type="text" name="uname" placeholder="请输入用户名">
p>
<p>
用户密码:<input type="password" name="upwd">
p>
<p>
用户性别:
<input type="radio" name="gender" value="boy" checked="checked">男
<input type="radio" name="gender" value="girl">女
p>
<p>
兴趣爱好:
<input id="dance" type="checkbox" name="hobby" value="dance">
<label for="dance">蹦迪label>
<input id="rap" type="checkbox" name="hobby" value="rap">
<label for="rap">raplabel>
<input id="spa" type="checkbox" name="hobby" value="spa" checked>
<label for="spa">保健label>
p>
<p>
用户头像:
<input type="file" name="uimg">
p>
<p>
<input type="hidden" name="uid" value="001">
p>
<p>
所在地址:
<select name="city">
<option value="bj">北京option>
<option value="sh">上海option>
<option value="gz">广州option>
<option value="sz">深圳option>
select>
p>
<p>
个人介绍:
<textarea name="uinfo">textarea>
p>
<p>
<input type="submit" value="注册">
<input type="reset" value="重置">
<input type="button" value="点击">
p>
<button>form内button>
form>
<button>form外button>
1)行内样式:
例如:
<h1 style="color:red;background-color:green;">小泽h1>
2)内嵌样式表
书写样式代码,实现结构与样式的分离,使用选择器匹配文档中的元素并设置样式选择器:根据标签名,属性值或层级结构查找对应元素
选择器{
属性:值;
}
例如:标签选择器,根据标签名匹配元素
<style>
h2{
color:orange;
font-size:32px;
}
style>
3)外链样式表
优先级划分:
4. 选择器分类
<style>
#d1{
}
style>
<h1 id="d1">h1>
<style>
.c1{
}
.c2{
/*设置文本的水平对齐方式,默认居左*/
text-align:center;
}
/*选择器组合使用*/
p.c1{/*匹配类名为c1的p元素*/
}
style>
<h1 class="c1 c2">示例文本h1>
<p class="c2">示例文本p>
<style>
#d1,.c2,p{
font-size:20px;
}
style>
后代选择器:在选择器1中查找所有满足选择器2的后代元素
selector1 selector2{ }
子选择器:在选择器1中查找所有满足选择器2的直接子元素
selector1>selector2{ }
伪类选择器:伪类用于表示元素的某种状态,必须和基础选择器结合使用
分类:
(1)超链接伪类选择器
:link 访问前
:visited 访问后
补充:a{text-decoration:none; /*取消超链接默认下划线*/}
(2)动态伪类
:hover 鼠标滑过(悬停)
:active 鼠标点按(激活)
(3)表单控件状态
:focus 输入框的焦点状态
input:focus{
/*取消输入框在焦点状态下的轮廓线*/
outline:none;
}
(4)子元素过滤选择器
:last-child:匹配最后一个子元素
:first-child:匹配第一个子元素
:nth-child(n):匹配第n个子元素
#box span{} /*100+1*/
#box>h1.c1{} /*100+1+10*/
注: 行内元素与行内块元素默认按照文本的基础线对齐,可以设置vertical-align设置元素之间的垂直对齐方式,取top/middle/bottom添加给行内块元素上,调整左右元素与当前元素的垂直对齐。
特殊:行内元素拼接三角标时,默认不能手动调宽高,自带高度(由字体大小决定),可以设置font-size:0;或者去掉默认高度;或者转换元素类型,转换成块元素/行内块元素 设置尺寸为0。
转换元素类型:
属性display
取值:block(块元素)、inline(行内元素)、inline-block(行内块元素)、none(元素隐藏)
4)轮廓线:轮廓线在文档中不占位,边框是实际占位的。
outline:width style color;
常用:outline:none
(取消文本框焦点状态下的边框)
5)边框圆角
属性:border-radius设置圆角半径
取值:像素值/百分比(分别按照元素的宽高t计算取值)
使用:常用像素值设置四个角的圆角效果;使用50%调整元素的显示形状(正圆或椭圆)
6)盒阴影
属性:box-shadow
取值:offsetX offsetY blur(speed)color
网页坐标系:一律以左上角为原点,向右向下分别为X轴和Y轴的正方向
属性值:
offsetX/offsetY:设置阴影的偏移距离
blur:设置阴影的模糊程度,取像素值,越大越模糊
spread:选填,设置阴影的延伸距离
color:设置阴影颜色,默认为黑色
内边距设置
设置内容框与边框之间的距离
属性:padding
取值:像素值
取值规律:
1)50px 统一设置四个方向的内边距
2)50px 20px 分别设置上下 左右的内边距
3)10px 20px 30px 分别设置上、右、下,缺省方向与右侧内边距保持一致
4)10px 20px 30px 40 px 分别设置上、右、下、左四个方向的内边距
单方向内边距设置:只能取一个值
padding-top、padding-right、padding-bottom、padding-left
取消默认内边距:padding:0
外边距设置
设置元素与元素之间的距离
属性:margin
取值:像素值,取值规律同padding
特殊取值:
1)设置左右自动外边距(auto),实现元素在父元素范围内水平居中
2)取负值,元素位置的微调
单方向外边距设置:margin-top、margin-right、margin-bottom、margin-left
外边距合并:
1)垂直方向
第一个子元素设置的margin-top,作用于父元素上。可以为父元素设置顶部边框或者添加padding-top:0.1px
同时为元素设置上下边距,元素之间最终选用最大的边距值
2)水平方向
具有默认外边距的元素:
body、h1~ h6、p、ul、ol{
margin:0;
padding:0;
/*取消列表的项目符号*/
list-style:none;
}
作业:
参考导航栏,父元素固定500宽,实现在body中居中;5个子元素(导航项)之间设置10px的外边距
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<style>
body{
margin: 0;
}
a{
text-decoration: none;
color: #ffffff;
display: inline-block;
width: 92px;
height: 50px;
margin-right: 10px;
/* background: green; */
font-size: 20px;
text-align: center;
/* 一行文本在当前行中永远是垂直居中,可以手动设置行高跟元素高度保持一致,实现一行文本在元素中的垂直居中效果 */
line-height: 50px
}
a:hover{
background: green;
}
#nav{
background: orange;
width: 500px;
height: 50px;
/* 父元素字体大小为0,解决水平方向上由于代码换行导致的子元素之间出现的空隙,子元素需要手动调整可见字体大小 */
font-size: 0px;
margin: 0 auto;
}
.no-margin{
margin: 0
}
style>
head>
<body>
<div id="nav">
<a href="">淘宝a>
<a href="">淘宝a>
<a href="">淘宝a>
<a href="">淘宝a>
<a href="" class="no-margin">淘宝a>
div>
body>
html>
静态流/文档流布局
根据元素类型和代码的书写顺序,从上到下,从左到右依次显示
浮动布局
属性:float
取值:left / right
特点:
1)浮动元素会从它在文档中的原始位置脱离文档流,“悬浮”在父元素的上方,按照浮动方向一次停靠在前一个元素的边缘。
2)元素脱流之后,在文档中不占位,可以手动设置宽高
3)“文字”环绕效果:浮动元素会遮挡正常元素的位置,但是不影响内容显示,正常内容会围绕在浮动元素周围显示
问题:
1)浮动元素不占位,后面正常的元素会向前占位
解决:清除浮动
属性:clear
取值:left / right / both
使用:添加在正常元素上,使其不受前面浮动元素的影响
2)子元素全部浮动,造成父元素高度为0,影响父元素自身背景或边框样式的显示,影响整体布局
解决方式一:给父元素固定高度(适用于内容确定的元素。例如:导航栏)
解决方式二:给父元素设置overflow:hidden(适用于内容不确定,需要动态加载的元素。例如:页面主体)
解决方式三:父元素末尾添加空的块元素,设置clear:both
定位布局
1)定位用于实现元素显示位置的调整
2)属性:position
取值:relative / absolute / fixed
使用:元素设置position属性之后,才能称为已定位的元素,已定位的元素可以结合偏移属性调整显示位置
3)偏移属性:top(设置距离参照物顶部的偏移量) left bottom right
4)分类
#chat{
width:300px;
height:300px;
background:green;
position:fixed; /*固定定位*/
right:0; /*居浏览器右为0*/
bottom:0; /*居浏览器下为0*/
}
5)堆叠次序调整:
取像素值,在元素坐标系中设置背景图片的起始坐标
取方位值
百分比:x% y%计算背景图片的起始坐标:(元素尺寸-图片尺寸)*x%
特殊值:0% 0% --> left top; 50% 50% --> center; 100% 100% --> right bottom
4)background-size: width height;
设置背景图片的尺寸
取像素值,百分比或关键字:
像素值,直接指定宽高,只给一个值表示设置宽,高度会等比例缩放
百分比,根据元素尺寸计算背景图的尺寸
关键字:
5)简写属性:
background: color url() repeat position;
背景图片的尺寸,background-size需要单独设置
div{
width:500px;
height:500px;
background-color:pink;
background-image:url("xxx.jpg");
background-repeat:no-repeat;
background-position:100px 100px;
}