零基础学前端系列教程 | 和前端谈恋爱的第004天——打扮漂亮

简介: 零基础学前端系列教程 | 和前端谈恋爱的第004天——打扮漂亮

温馨提示:被【】包裹的是专有名词,详细介绍见下文的恋爱宝典,你可以在目录中快速找到它们,有任何问题/建议,欢迎随时微信我,我是朝阳 13908056224!

经过第3天的补充完善,约会邀请函的内容已经很丰富了。

零基础学前端系列教程 | 和前端谈恋爱的第003天——电影海报

但依然有点拿不出手,下面让我们一起来把它打扮漂亮,

恭迎前端化妆神器——【CSS】 ,闪亮登场!

最终效果

因鄙人非专业美工,配色或布局有不合理的地方,欢迎留言指正!

话不多说,直接开始吧!

div 盒子

先用一个盒子把所有内容装起来,以便将约会邀请函定位到整个页面正中间,并添加背景图片和背景色,此时便需要用到 html 中的 div 标签。


div 标签本身并不会在页面上渲染任何内容,只是一个矩形容器,用于将页面上的元素包裹起来,以便将包裹起来的元素作为一个整体来进行【定位】或添加【样式】。(类似PPT中选中多个元素,创建一个组合)。

在div盒子中可以放裸奔的文字,如:

<div>
 我是div盒子中裸奔的文字
</div>

也可以在div盒子中放其他div盒子,如:

<div>
  我是最外面的大盒子
  <div>我是大盒子里放的第1个小盒子</div>
  <div>我是大盒子里放的第2个小盒子</div>
</div>

默认情况下,div盒子是完全透明不可见的,宽度占满整行,高度具有弹性(就像紧身衣一样),如果没有给div指定宽度或高度,div盒子的高度将由div盒子中元素的高度决定(如果div内仅有文字,则高度由【行高】决定,而不是文字大小!)。

对于 div盒子,最重要的便是要理解 “”盒模型”,详见我的博客 《CSS 盒模型 VS IE 盒模型》

背景图片 vs 背景色

使用div盒子将整个页面的内容包裹好后,便可以通过给div盒子添加背景图片,来给页面添加背景图片。

因控制背景图片的样式较多,推荐通过class属性来添加样式,具体代码如下:

<div class="page">
…… 此处省略了其他代码
</div>

给包裹整个页面的div盒子添加了class属性,属性值为 page

  • html标签的class属性用于给html标签添加样式,class的属性值可以是多个样式名,用空格隔开,如 class = "page red"
<style>
.page {
  box-sizing: border-box;
  width: 750px;
  padding: 200px 80px 30px 80px;
  margin: 0 auto;
  line-height: 32px;
  background-color: rgb(244, 238, 232);
  background-image: url(./images/背景.png);
  background-position: center top;
  background-repeat: no-repeat;
}
</style>

html中的style标签内用于写页面相关的样式信息,使用的语言是【CSS】

.page是CSS中类选择器的写法,表示给页面中class的属性值包含page的元素添加样式

大括号中为具体的样式描述,格式为:样式名:样式值;

样式 box-sizing 用于描述采用哪种盒模型,详见 《CSS 盒模型 VS IE 盒模型》,样式值 border-box表示使用 IE 盒模型:宽度 = 内容宽度+padding内边距+border边框

  • 样式 width 用于描述div盒子的宽度,样式值为 750px 即 750像素

样式 padding 用于描述div盒子的内边距,样式值为 200px 80px 30px 80px 表示

—— 上内边距为 200px

—— 右内边距为 80px

—— 下内边距为 30px

—— 左内边距为 80px

样式 margin 用于描述div盒子的外边距,样式值为 0 auto 表示

—— 上外边距为 0px

—— 下外边距为 0px

—— 左外边距为 auto (自动分配)

—— 右外边距为 auto (自动分配)

重要技巧提示: 当div盒子的左外边距和右外边距都是 auto 即自动分配时,div盒子会在整个页面/父div盒子中水平居中!


样式 line-height用于描述div盒子中内容的【行高】,样式值为 32px 即两倍【行高】(浏览器中文本的默认大小为16px)

样式 background-color 用于描述div盒子的背景色,样式值为 rgb(244, 238, 232) 即浅棕色,采用的RGB颜色表示法(详见下文的 颜色 color )

样式 background-image 用于描述div盒子的背景图片,样式值为 url(./images/背景.png) ,其中 url() 是 【CSS函数】,用于解析文件的地址,./images/背景.png 为背景图片的相对于当前页面的存储地址。

样式 background-position 用于描述背景图片的位置,样式值为center top即水平方向居中,垂直方向置顶。更多详情见 《background-position详解》

样式 background-repeat 用于描述背景图片是否重复,样式值为no-repeat即不重复。另一个样式值为 repeat 即重复,当整个背景(通常是div盒子)比背景图片大时,会像贴瓷砖一样,不断重复背景图片来铺满整个背景。

综上,请记住下方的核心代码:

背景图片 background-image

  background-image: url(./images/背景.png);
  background-position: center top;
  background-repeat: no-repeat;

背景色 background-color

background-color: rgb(244, 238, 232);

至此,约会邀请函的效果如下:

下一步,让标题水平居中,并换个颜色,给标题 h1 标签添加属性值为 title的 class 属性,继续在 style 标签(还是上文中的那个 style 标签,所有使用css描述的 class 样式都写在一个style 标签中即可)中添加相关的样式:

<h1 class="title">一份诚挚的约会邀请</h1>
 
.title {
  text-align: center;
  color: #ca716a;
}

水平对齐 text-align

样式 text-align 用于描述文本在水平方向上的对齐方式,有以下样式值:

  • left 【默认值】——水平靠左对齐
  • center ——水平居中对齐
  • right ——水平靠右对齐

颜色 color

样式 color 用于描述文本的颜色,有以下样式值:

代表颜色的英文单词 —— 如 red 红色、green 绿色、blue 蓝色、orange 橙色、gray 灰色等,不区分大小写 。

transparent —— 表示透明 。

currentColor —— 表示与【父元素】的color 的样式值相同。

16进制的颜色值 —— 如 #FF0000、#0000FF、#00FF00等,所有#aabbcc的形式,都能简化为#abc

rgb() 颜色表示法 —— 用红red、绿green、蓝blue 这三种颜色根据不同的配比混合得到想要的颜色(三原色原理),每种原色有256级(0-255)亮度,支持百分比值,如红色就是 rgb(255,0,0),绿色为rgb(0,255,0),蓝色为rgb(0,0,255),黑色为rgb(0,0,0),白色为rgb(255,255,255)。

rgba() 颜色表示法 —— 在rgb的基础上,增加了A(Alpha通道,即透明度,取值为0-1),如 rgba(0, 0, 255, 0.5) 表示半透明的蓝色。

拾色器 FSCapture

使用拾色器(如 FSCapture.exe)可以轻松获取到以上各种颜色值

百度网盘下载链接:https://pan.baidu.com/s/1C1NiNGxWOnxHX5Q-911Ulg

提取码:epe8

小标题

页面中经常会有用于区分信息模块的小标题,比如约会邀请函中的

小标题的样式通常是加粗,并与主题色相同,所以给它们的class属性添加上样式 subTitle

<p class="subTitle">详细时间地点信息如下:</p>
<p class="subTitle">温馨提示:</p>
 
.subTitle {
  font-weight: bold;
  color: #ca716a;
}

文本加粗 font-weight

对于需要强调,或希望更显眼的文字,通常需要加粗一下,这时便要用到样式 font-weight ,它有以下样式值:

  • normal 【默认值】正常粗细,无加粗效果
  • bold 【常用值】加粗

具体数值:100 200 300 400(等同于normal) 500 600 700(等同于bold) 800 900

相对值(相对于父级元素):lighter 比父元素的文本细一点 bolder 比父元素的文本粗一点

因为加粗的样式使用频率非常高,通常会在公共样式里定义一个样式名为 b 的样式类

.b {
  font-weight: bold;
}

然后在需要加粗的文字上,添加上这个样式即可,如:

 <li><span class="b">时间:</span> 2022年12月28日19:00-21:00</li>
 <li><span class="b">地点:</span>太平洋电影院(春熙路店)</li>
 <li><span class="b">电影:</span>《爱情神话》</li>

行内文本 span

诶,这里出现了一个新的 html 标签 span ,它通常用于包裹在一行中的部分文本。

 <li><span class="b">交通:</span>2号地铁春熙路站D口</li>
 <li><span class="b">碰头:</span>18:45在电影院正门口</li>

span 标签不会在页面上渲染任何效果,也不会像 pdiv那样撑满整行,仅用于对文本进行简单的打包,以便给指定文本添加样式。

style 属性

基于之前的打扮,我们会发现还存在下图中的三个问题

首先来解决问题 1. 间距太小

解决方案很简单,增加图片的上外边距即可。

这里介绍一种新的添加样式的方式——使用 html 标签的 style 属性

<img
  style="margin-top: 10px"
  height="240"
  src="./images/电影海报《爱情神话》.jpg"
  alt="《爱情神话》的电影海报"
/>

在 img 标签上添加 style 属性,属性值为要添加的样式 margin-top: 10px

撑满整行 width=“100%”

接着解决问题 2. 宽度不同没对齐。

自从将整个页面的宽度 width 设置为 750px 后,因图片和视频的宽度之和大于 750 px ,视频便因页面宽度不够,自动换到了下一行。


之前因图片和视频在同一行,所以将它们设置为相同的高度 height="240" ,现在变成了两行,为了美观,应该改为相同的宽度。


具体宽度值设置为多少好呢?如果页面宽度改变了,是否需要重新修改宽度呢?有没有一劳永逸的方法呢?


当然有,那就是使用百分比值!


让图片和视频的宽度永远和父元素(本案例中为class值为page的div)的宽度保持固定的比例,这样无论页面宽度如何变化,图片和视频的宽度都能自适应改变。

经测试,本案例中将宽度值设置为 100% (撑满整行)效果最佳,所以修改后代码如下:

<img
  style="margin-top: 10px"
  width="100%"
  src="./images/电影海报《爱情神话》.jpg"
  alt="《爱情神话》的电影海报"
/>

<video width="100%" controls>
  <source src="./videos/《爱情神话》宣传片.mp4" />
</video>

最后一个问题 3. 豆瓣影评超链接的样式太low,和图片视频不匹配。

可以对超链接的样式进行优化,不过考虑到点击超链接后,会跳转到豆瓣影评页,这种交互体验不太友好,我打算将超链接改造成内嵌网页。

内嵌网页 iframe

<iframe
  class="win"
  src="https://movie.douban.com/subject/35376457/"
  frameborder="0"
></iframe>
  • iframe 标签用于在当前网页中内嵌另一个网页,有点像在当前网页中开了一个小l浏览器窗口,可以通过这个窗口访问其他网页。
  • src 属性用于指定要显示的目标网页的网址
  • frameborder 属性用于指定窗口的边框效果,默认值为1,显示1px宽度的边框,此处为了美观,设置为 0,隐藏了边框。

配套样式为

.win {
  width: 100%;
  height: 1000px;
}

至此,整个化妆已经完工,却意外发现,好像没有留自己的联系方式……

赶紧加上!

拨打电话 tel

      <li>
        若迷失方向随时联系我
        <a href="tel:13908056224">13908056224</a> ,我来接你!
      </li>

仍然是使用 a 标签,不过 href 的属性值改成了拨打电话所特有的格式

tel:电话号码

学会了吗?

完整代码

<div class="page">
  <h1 class="title">一份诚挚的约会邀请</h1>
  <p>你好,我是朝阳,最近新上映的电影《爱情神话》听说还不错,一起去吧?</p>
  <p class="subTitle">详细时间地点信息如下:</p>
  <ul>
    <li><span class="b">时间:</span> 2022年12月28日19:00-21:00</li>
    <li><span class="b">地点:</span> 太平洋电影院(春熙路店)</li>
    <li><span class="b">电影:</span>《爱情神话》</li>

    <img
      style="margin-top: 10px"
      width="100%"
      src="./images/电影海报《爱情神话》.jpg"
      alt="《爱情神话》的电影海报"
    />

    <video width="100%" controls>
      <source src="./videos/《爱情神话》宣传片.mp4" />
    </video>

    <iframe
      class="win"
      src="https://movie.douban.com/subject/35376457/"
      frameborder="0"
    ></iframe>
    <li><span class="b">交通:</span>2号地铁春熙路站D口</li>
    <li><span class="b">碰头:</span>18:45在电影院正门口</li>
  </ul>

  <p class="subTitle">温馨提示:</p>
  <ol>
    <li>晚上天气微凉,多穿点衣服注意保暖;</li>
    <li>年关将近,春熙路人多,留意提防小偷;</li>
    <li>
      若迷失方向随时联系我
      <a href="tel:13908056224">13908056224</a> ,我来接你!
    </li>
  </ol>
</div>

<style>
  .page {
    box-sizing: border-box;
    width: 750px;
    padding: 200px 80px 30px 80px;
    margin: 0 auto;
    line-height: 32px;
    background-color: rgb(244, 238, 232);
    background-image: url(./images/背景.png);
    background-position: center top;
    background-repeat: no-repeat;
  }
  .title {
    text-align: center;
    color: #ca716a;
  }
  .b {
    font-weight: bold;
  }
  .subTitle {
    font-weight: bold;
    color: #ca716a;
  }
  .win {
    width: 100%;
    height: 1000px;
  }
</style>

恋爱宝典

CSS

CSS的全称为层叠样式表,是Cascading Style Sheets的首字母缩写,主要用途就是修改页面的样式,给 html 化妆的。


如果把 html 比作一个房子(你的家),div盒子标签就是隔断房间的墙壁,img图片标签是挂在墙上的画,video视频标签是客厅里的电视机,audio音频标签是音乐播放器,h标题标签是大门上的门牌号,p段落标签是你在每间房中设置的不同功能的区域(比如书桌那片是学习区,铺着瑜伽垫的那块是健身区、摆着沙发那块是休息区……),span行内文本标签是拼接成每个房间地面的一块块地板,大部分a超链接标签是把你传送到不同朋友房子的超时空传送器,也有少数a超链接标签被改造成了你家里的电话机,ul无序列表标签是你写在备忘录里的待办清单,ol有序列表标签是你贴在冰箱上的常用菜谱,iframe内嵌网页标签是你家里的魔镜,通过它你可以足不出户看到任何一个朋友家里的实时情况,甚至隔空在朋友家的留言板上贴上你的留言!


那么css 是什么呢? css 就是你花大价钱请来的装修公司,她最擅长的就是帮你把家里设计布置成任意你想要的模样!

定位

定位即固定位置,我们可以将网页看做一个标准的四四方方的矩形房间,每一个html标签都是放在房间里的物品,默认情况下,所有物品都是从上向下、从左到右依次排列的,如果当前行放不下了,就会自动换到下一行。

为了更精准的控制元素的位置,可以使用【相对定位】或【绝对定位】,另外还有固定定位黏性定位(更为复杂些,以后再学!)

相对定位

相对定位即相对于自己原来的位置,进行位置调整。

通过给标签添加样式 position: relative;可对元素进行相对定位,然后修改以下四个样式值,来确定具体位置:

  • left:右移
  • right:左移
  • top:下移
  • bottom:上移

如下范例,原本蓝盒子就在红盒子正下方

给蓝色盒子添加相对定位的样式后,效果如下:

    position: relative;
    top:40px;
    left: 50px;

绝对定位

绝对定位通常是相对于整个网页进行定位,但当父/祖元素外存在相对定位的元素时,将相对于最近的相对定位的元素计算距离

通过给标签添加样式 position: absolute;即可对该元素进行绝对定位,然后修改以下四个样式值,来确定具体位置:


(如果不设置以下四个样式值,元素会保留在原位置不动!)


top —— 元素距离顶部的距离

bottom—— 元素距离底部的距离

left —— 元素距离左侧的距离

right —— 元素距离右侧的距离

通常指定水平和垂直方向,各一个样式即可确定最终位置,范例如下:

<div class="box"></div> 
.box {
  position: absolute;
  top:40px;
  left: 40px; 
}

样式

在计算机的专业术语中,样式表示元素的模样和格式,不同的html标签元素有着各自不同的特有样式,比如最常见的文本样式如下:

文本样式

对于文字而言,常用的样式有:

  • 文本大小 font-size,如 font-size:20px;
  • 文本粗细 font-weight,如 font-weight: bold;
  • 文本字体 font-family,如 font-family: “微软雅黑”
  • 文本颜色 color,如 color:red
  • 文本装饰线
    /* 没有装饰线 */
    text-decoration-line: none;
    /* 上划线装饰 */
    text-decoration-line: overline;
    /* 贯穿线装饰 */
    text-decoration-line: line-through;
    /* 下划线装饰 */
    text-decoration-line: underline;
    /* 支持同时设置多个属性——如上划线装饰和下划线装饰同时出现 */
    text-decoration-line: underline overline;

  • 文本装饰线的风格(类型)
    /* 实线 */
    text-decoration-style: solid;
    /* 双实线 */
    text-decoration-style: double;
    /* 点线 */
    text-decoration-style: dotted;
    /* 虚线 */
    text-decoration-style: dashed;
    /* 波浪线 */
    text-decoration-style: wavy;

行高 line-height

行高,是两行文字“基线”之间的垂直距离

CSS函数

在计算机术语中,函数是指一段可以被引用的具有特定功能的代码。

作为主要功能是负责样式的CSS,有存在一些很实用的函数,比如上文提到的url()图片地址函数,通过传入图片地址,就能让css获取到该图片。

background-image:url( "https://media.geeksforgeeks.org/wp-content/cdn-uploads/20190710102234/download3.png");

父元素

html标签相互包裹嵌套后,便会产生各种不同的关系,比如:

<div class="father">
  <div class="child1"></div>
  <div class="child2"></div>
</div>

最外面的div盒子是里面两个div盒子的父元素;

里面两个div盒子是外面div盒子的子元素。

默认值

默认值,即当没有通过代码修改或指定设置时,系统默认给属性或样式设置的值。

常用值

常用值,即该属性/样式经常被设置的值。

说不完的情话

  • 你娉婷婉约的风姿,娇艳俏丽的容貌,妩媚得体的举止,优雅大方的谈吐,一开始就令我刮目相看。
  • 在风吹散你的头发时,我简直着魔了:在闪闪发光的披肩柔发中,在淡淡入鬓的蛾眉问,在碧水漓漓的眼睛里,你竟是如此美丽可人!
  • 在人流中,我一眼就发现了你。我不敢说你是她们中最漂亮的一个,可是我敢说,你是她们中最出色的一个。那健美的身材,优雅迷人的风度,尤其是那一头乌亮的秀发,有一种说不出的魅力。
  • 女人之所以美丽,是因为有好心情;之所以潇洒,是因为有自信;之所以有气质,是因为有极佳的涵养;之所以告诉你,是因为你占全了!
目录
相关文章
|
2天前
|
移动开发 前端开发 定位技术
零基础学前端系列教程 | 和前端谈恋爱的第002天——约会邀请
零基础学前端系列教程 | 和前端谈恋爱的第002天——约会邀请
14 2
|
2天前
|
移动开发 前端开发 HTML5
零基础学前端系列教程 | 和前端谈恋爱的第005天——约会账单
零基础学前端系列教程 | 和前端谈恋爱的第005天——约会账单
9 1
|
3天前
|
前端开发 JavaScript
前端模拟接口工具推荐——Apifox(mock数据)【图解教程】
前端模拟接口工具推荐——Apifox(mock数据)【图解教程】
15 1
|
2天前
|
存储 前端开发 JavaScript
零基础学前端系列教程 | 和前端谈恋爱的第006天——了解喜好
零基础学前端系列教程 | 和前端谈恋爱的第006天——了解喜好
7 0
|
2天前
|
存储 编解码 移动开发
零基础学前端系列教程 | 和前端谈恋爱的第003天——电影海报
零基础学前端系列教程 | 和前端谈恋爱的第003天——电影海报
6 0
|
2天前
|
前端开发 小程序
零基础学前端系列教程 | 和前端谈恋爱的第001天——你好,前端
零基础学前端系列教程 | 和前端谈恋爱的第001天——你好,前端
6 0
|
8天前
|
前端开发 JavaScript 数据库
如何实现前后端分离-----前端笔记
如何实现前后端分离-----前端笔记
|
8天前
|
前端开发 安全 NoSQL
技术笔记:Security前端页面配置
技术笔记:Security前端页面配置
|
1月前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
32 2
|
2月前
|
存储 前端开发 JavaScript
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
54 1