前端入门(HTML核心+CSS基础)二

经过一周的学习我又来发布笔记啦

今天我们来到了CSS基础重要部分,浮动和定位

1.浮动

视觉格式化模型,大体上将页面中盒子的排列分为三种方式:

1. 常规流

块盒:纵向上外边距合并;横向上撑满包含快

行盒:上一个行盒的头部接上下一个行盒的尾巴

2. 浮动

3. 定位

 应用场景

1. 文字环绕

2. 横向排列

 浮动的基本特点

修改float属性值为:

- left:左浮动,元素靠上靠左

- right: 右浮动,元素靠上靠右

默认值为none

1. 当一个元素浮动后,元素必定为块盒(浮动后更改display属性为block)

2. 浮动元素的包含块,和常规流一样,为父元素的内容盒

盒子尺寸

1. 宽度为auto时,适应内容宽度(常规流会撑满)

2. 高度为auto时,与常规流一致,适应内容的高度

3. margin为auto时, 为0

(常规流会吸收剩余空间但没有宽度吸收能力强,若宽度和margin均为auto则宽度吸收完margin不吸收)

4. 边框,内边距,百分比设置与常规流一样(包含快宽度的百分比)

 盒子排列

1. 左浮动的盒子靠上靠左排列

2. 右浮动的盒子考上靠右排列

右浮动

左浮动

3. 浮动盒子在包含块中排列时,会避开常规流块盒![Alt text](image-6.png)

4. 常规流块盒在排列时,无视浮动盒子![Alt text](image-5.png)

5. 行盒在排列时会避开浮动盒子

6. 外边距合并不会发生(只有常规流会发生,定位也不会)

> 如果文字没有在行盒中,浏览器会自动生成一个行盒包裹文字,该行盒叫做匿名行盒

文字环绕

文字与图片之间的距离应该设置图片的margin-right

## 高度坍塌

其中为浮动盒子

其中为常规流盒子会被撑开

高度坍塌的根源:常规流盒子的自动高度,在计算时,不会考虑浮动盒子

清除浮动,涉及css属性: clear

- 默认值: none

- left: 清除左浮动,该元素必须出现在前面所有左浮动盒子的下方

- ripht; 清除右浮动,该元素必须出现在前面所有右浮动盒子的下方

- both: 清除左右浮动,该元素必须出现在前面所有浮动盒子的下方

解决高度坍塌

1. 在所有浮动盒子后面写一个clearfix

2. 用after

2.浮动练习

# 导航菜单

1. ul>li*导航菜单的个数>a>导航菜单的内容

2. nav元素表示导航菜单

   <nav>

      a*导航菜单的个数>导航菜单的内容

   </nav>

# 设置行高

 text-align:center ;/*水平居中*/

 line-height: 60px;/*垂直居中 line-height=height(行高)*/

 # 鼠标移入时变成什么颜色

 .main .nav a :hover

    {/*鼠标在其上面时为什么颜色*/

    color: #fff;

# 鼠标位于当前页面时显示的是什么

.main .nav a.select{

    color: #ef4238;/*鼠标位于当前页面时显示的是什么*/

}

# 居中

 水平方向上

 margin: 0 auto;

 # 解决高度坍塌

某一元素设置了浮动之后,找其父元素看其父元素有没有固定高度,有则不会发生高度坍塌,没有则需给其父元素加上clearfix

.clearfix::after{

    content:"" ;

    display: block;

    clear: both;

}

# 引用元素时要用空格隔开

# 将边框设置为圆的

 /*css3圆角边框*/

    border-radius: 15px;

# 重复电影类型

 div.movie-item*30>(图片)+(名字)+(评分)来生成

 # nth-child() 伪类选择器,选择括号里面的数据进行样式的改变

 .main .container .movies .movie-item:nth-child(6n){

}

# 文字多时显示时有省略号可以用

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

    padding: 0 2px;

    text-align: center;

# 文字为斜体

font-style: italic;

# 让第一个字变大

.main .container .movies .movie-item .score::first-letter{

    font-size: 1.5em;

}

# first-letter元素选择器

可选中第一个元素

# 练习结果

# 3. 定位  

视觉格式化模型,大体上将页面中盒子的排列分为三种方式:

1. 常规流

2. 浮动

3. 定位

定位:手动控制元素在包含块中的精准位置

涉及的CSs属性: position

## position属性

- 默认值:static,静态定位 (不定位)

- relative:相对定位(不影响原来位置,原来是常规流现在仍然是常规流,原来是浮动现在仍然是浮动,不会脱离文档流,但是会变成一个定位元素)给绝对定位元素提供包含快

- absolute:绝对定位

- fixed: 固定定位

一个元素,只要position的取值不是static,认为该元素是一个定位元素

定位元素会脱离文档流(相对定位除外)

一个脱离了文档流的元素:

1. 文档流中的元素摆放时,会忽略脱离了文档流的元素

2. 文档流中元素计算自动高度时,会忽略脱离了文档流的元素(高度坍塌)

## 相对定位

不会导致元素脱离文档流,只是让元素在原来位置上进行偏移

不影响原来位置,原来是常规流现在仍然是常规流,原来是浮动现在仍然是浮动,不会脱离文档流,但是会变成一个定位元素

可以通过四个CSS属性对设置其位置

- left

- right

- top

- bottom

margin-left与left区别

margin-left的宽度会减小;left只偏移但宽度不变

当左右同时出现时会用左效果

当上下同时出现时会用上效果

盒子的偏移不会对其他盒子造成任何影响

祖先元素为其向上找到的第一个的第一个定位元素

## 绝对定位

给绝对定位元素提供包含快、

1. 高为auto,适应内容

2. 包含块变化: 找祖先中第一个定位元素,该元素的填充盒为其包含块。若找不到,则它的包含块为整个网页 (初始化包含块)

整个网页为其包含快,其在整个网页内活动

 left right top bottom等于几表示离包含快左右上下的距离

## 固定定位

其他情况和绝对定位完全一样

只有包含块与绝对定位不同:固定为视口(浏览器的可视窗口,肯能比初始化网页大可能比初始化网页小)

不论页面怎么动,固定定位后的元素不会动

初始化网页包含整个网页

## 定位下的居中

某个方向居中

1. 定宽(高)

2. 将左右(上下)距离设置为0

3. 将左右(上下) margin设置为auto

绝对定位和围定定位中,margin为auto时,会自动吸收剩余空间,使得元素居中

设置 border-radius:几% 可以将其变为圆框

## 多个定位元素重叠时

堆叠上下文

设置z-index,通常情况下,该值越大,越靠近用户

谁值大,谁靠前,在最上面

只有定位元素设置z-index有效

z-index可以是负数,如果是负数,则遇到常规流和浮动元素,则常规流和浮动元素会覆盖定位元素

文字在红圆圈的上面

## 补充

1. 绝对定位、固定定位元素一定是块盒

2. 绝对定位、固定定位元素一定不是浮动

(若浮动和定位一起出现,则浮动被强制改为定位)

3. 没有外边距合并


 4.定位练习

# 二级菜单

1. 只要使用了浮动记得给其父元素加clearfix

.clearfix::after{

    content: "";

    display: block;

    clear: both;

}

2. 二级菜单是某个菜单的一个子菜单,写在它对应的li中就好了

3. 浮动元素宽度是auto时,表示宽度适应内容,内容较多时就会把宽度撑开

4. .header .topnav>li  topnav后面加了>li表示支只对li元素进行样式设置

5. 先四个方向全部设置边框最后去掉下边框,得到三周边框

border: 2px solid #ccc;

border-bottom: none;

6. 想要加了边框后不改变盒子的尺寸,用 box-sizing: border-box;

7. 行高固定,加了边框后,框内的内容会往下移,为了解决此问题,可以设置line-height 调试到合适的行高使得文字不再移动

8. 实现鼠标点上去显示,移开时隐藏

/*不生成盒子,若一个元素没有生成盒子的话,元素是不显示的*/

   display: none;

/*使其移上时显示*/

.header .topnav>li:hover.submenu{

    display: block;

}

9. 若想要固定菜单可以设置,就可以让菜单固定在网页上,不随页面滑动而移动

    position: fixed;

    width: 100%;

    left: 0;

    top: 0;

# 弹出层

1. 透明效果

每个颜色都具有透明通道,0 ~ 1

1.rgba(红,绿,蓝,alpha)

2.hex: #红绿蓝透

1不透明,0完全透明

改变透明度可以实现蒙层

2. 鼠标变为一个小手,用cursor: pointer;

# 轮播图

1. 图片显示一张,但是其后面可能有很多张

2. 蒙层使用绝对定位还是相对定位取决于蒙层是蒙上网页的一部分(绝对定位),还是蒙上整个视口(固定定位)

5.更多的选择器

## 更多伪类选择器

若要与其他元素选择器连用可以a:伪类选择器(用一个:)

1. first-child  first-of-type

first-child选择第一个子元素

通常在选择器前面加另一个元素选择器,表示选中某一个元素的第一个子元素

页面上没有即使第一个元素又是a元素的元素,所以没有元素会被选中

first-of-type选中的是子元素中的第一个a元素,不论a之前有没有别的元素

2. last-child last-of-type

last-child

必须是a且必须是最后一个a,若后面有其他元素则不被选中

last-of-type  

子元素中的最后一个a元素,不论后面还有没有元素,最后一个a都会被选中

3. nth-child

选中指定的第几个子元素

even:关键字,等同于2n 偶

odd:关键字,等同于2n+1 奇

中间可以使用变量2n,n+1等

若前面有其他元素,其他元素的个数也算上

4. nth-of-type

选中指定的子元素中第几个某类型的元素,不管其他元素

隔行变色

## 更多伪元素选择器

若要与其他元素选择器连用可以a::伪元素选择器(用两个:)

1. first-letter

选中元素中的第一个字母或文字

2. first-line

选中元素中第一行的文字

3. selection

选中被用户框选时的文字

6.更多样式

## 透明度

0表示透明,1表示完全不透明

1. opacity,他设置的是整个元素的透明,它的取值时0~1

整个盒子的所有东西,所有子元素都变透明,不论文字还是背景

2. 在颜色位置设置alpha通道(rgba)

rgba(0,0,0,.5)

注意背景会默认覆盖边框盒

## 鼠标样式

使用cursor设置

使用图片做鼠标样式,注意图片类型必须是ico 或者cur

## 盒子的隐藏

1. display:none, 不生成盒子

2. visibility:hidden,生成盒子,只是从视觉上移除盒子,盒子依然存在,依然占据空间

## 背景图

img元素是属于HTML的概念

背景图属于css的概念

1. 当图片属于网页内容时,必须使用img元素

2. 当图片仅用于美化页面时,必须使用背暴图

### 涉及的css属性

1. background-image

在本文件当中引用图片

用url引用图片

若在css文件中引用图片则需用相对路径需要..返回上一级目录然后读取图片

2. background-repeat

默认情况下,背景图会在横坐标和纵坐标中进行重复

可以使用background-repeat:no-repeat 取消重复

3. background-size

预设值:contain,cover

contain

图片完整的显示出来,而且比例不变![Alt text](image-13.png)

cover

图片一定要撑满整个区域,还要保证图片的比例不变,所以可能图片的某些地方就被隐藏了![Alt text](image-14.png)

数值或百分比

数值:宽高

横向盛满,纵向按照比例进行缩放

横向纵向比例都撑满,但是图片的比例肯能会改变

4. background-position

设置背景图的位置,用数值或者百分比

预设值:left,bottom,right,top,center

横纵,百分比

左右上下,数值

雪碧图(精灵图)(spirit)

5. background-attachment

通常通常用它控制背景图是否固定

滑动文字后面的背景图固定不变

![Alt text](image-21.png)![Alt text](image-22.png)

6. 背景图与背景颜色混用

没有背景图的地方会用背景颜色来填充

7. 速写属性 background

在尺寸和位置中先写位置再写尺寸,中间用/连接

HTML进阶

#1.  iframe元素

框架页

通常用于在网页中嵌入另一个页面

iframe为可替换元素

1. 通常为行盒

2. 通常显示的内容取决于元素的属性

3. CSs不能完全控制其中的样式

4. 具有行快盒的特点(盒模型中各个尺寸都可以设置)

点击链接可以直接在本网页打开别的网页

![Alt text](image.png)

![Alt text](image-1.png)

可以在网页中加入别的网站的视频,注意加的是嵌入地址,不是网站地址

<iframe src="加嵌入地址" frameborder="0"></iframe>  

# 2. 在页面中使用flash

多用途互联网邮件类型:MIME (Multipurpose Internet Mail Extensions)

比如,资源是一个jpg图片,MIME:image/jpeg

object ,embed 来嵌入flash

它们都是可替换元素

1. object

![Alt text](image.png)

object中可以加入参数,name参数名,value参数值

![Alt text](image-1.png)

2. embed

可以直接在embed中加入参数和参数值

![Alt text](image-2.png)

更兼容的写法,当object不能被识别时,就用embed,若能被识别则embed就不会被识别

#3. 表单元素

一系列元素,主要用于收集用户数据

## input元素

输入框

可以用input:text加回车生成

重要元素

- value属性: 输入框的值

- placeholder属性: 显示提示的文本,文本框没有内容时显示

- type属性: 输入框类型

type: text, 普通文本输入框

type: password,密码框

type: date,日期选择框,有兼容性问题

type: search,搜索框,兼容性问题

type: number,数字输入框

step属性每次向上或者向下加或减的多少,默认为1

type:color 颜色选择框

type:checkbox 多选框

type:radio 单选框

注意单选框需要知道其分组,那几个单选是一组否则就会都被选上

默认选中:在input元素中加上checked(其实是布尔属性checked=checked)

type:file 多文件选择

input元素还可以制作按钮

reset,button,submit

当type值为reset时为重置按钮,可以通过value来改变按钮上显示的值,但是默认为重置

当type值为button时为普通按钮,可以通过value来改变按钮上显示的值,但是默认为空白

当type值为submit时为提交按钮,可以通过value来改变按钮上显示的值,但是默认为提交


## select元素

下拉列表选择框,而且可以给下拉列表进行分组

通常和option元素配合使用,给下拉列表进行分组用optgroup

默认被选中:selected(其实是布尔属性selected=selected)

在select中加上multiple(布尔属性)可以实现多选

按住ctrl可以同时选中几个或者按一下ctrl在按shilt键

## textarea元素

文本域,多行文本框

尽量用css来设置样式

## 按钮元素

button(设置按钮尽量用button,不推荐用input)

button默认是一个提交按钮,但可以用type来改变其类型

type属性:reset,submit,button

button可以直接在图片下面加文字,可以直接在后面加个style来改变图片的样式

## 表单状态

readonly属性:布尔属性,只读状态,不会改变表单显示样式

disabled属性:布尔属性,禁用,不能再点击,会改变表单显示样式

## 配合表单元素的其他元素

### label

普通元素,通常配合单选和多选框使用

- 显示关联

可以通过for属性,让label元素关联某一个表单元素,for属性书写表单元素的id的值

用for属性关联单选和多选框元素的id名,使得单选和多选框元素选中文字时也被选中

- 隐式关联

将表单元素直接放在label元素里面![Alt text](image-20.png)

### datalist

数据列表

该元素本身不会显示到页面,通常用于和文本框配合

将datalist通过id名和其他表单元素的list属性进行关联,回车时显示的是其value值![Alt text](image-21.png)![Alt text](image-22.png)

### form元素

通常情况下,会将整个表单元素,放置到form元素的内部。

作用是当提交表单时,会将form元素内部的表单内容以合适的方式提交到服务器

form元素对开发静态页面没有什么意义

### fieldset

分组

允许其内部加一个子元素legend表示分组的标题

#4. 美化表单元素

## 新的伪类

1. focus

元素聚焦时的样式,点击时的样式

2. checked

单选框或者多选框被选中时的样式

选中的单选框的下一个兄弟元素

若直接选中checked没有给单选框加label则不会有样式变化

## 常见用法

1. 重置表单元素样式

2. 设置textarea是否允许调整尺寸

用css属性resize:

- both: 默认值,两个方向都可以调整尺寸

- none: 不能调整尺寸

- horizontal:水平方向可以调整尺寸

- vertical: 垂直方向可以调整尺寸

3. 文本框边缘到内容的距离

padding 左右各到边框的距离

text-indent 首行缩进

4. 控制单选和多选的样式

+表示选中后面一个元素,~表示选中后面的所以元素

/*重置表单元素*/

input, textarea, button, select{

    border: none;

}

input:focus, textarea:focus, button:focus, select:focus{

    outline: none;

    outline-offset: 0;

}

好啦,这一周的分享就结束啦!!!

大家记得练习哦~~

下一星期同一时间同一地点我们不见不散!!!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值