全栈工程师必须要掌握的前端CSS技能

简介: 作为一名全栈工程师,在日常的工作中,可能更侧重于后端开发,如:C#,Java,SQL ,Python等,对前端的知识则不太精通。在一些比较完善的公司或者项目中,一般会搭配前端工程师,UI工程师等,来弥补后端开发的一些前端经验技能上的不足。但并非所有的项目都会有专职前端工程师,在一些小型项目或者初创公司中,职能划分并不明确,往往要一个人前后端全都会做, 所以作为一名全栈工程师或者后端工程师,掌握必备的前端知识,也是必不可少的一项技能。今天就着重讲解一下,作为一名全栈工程师,前端CSS方面的必须要掌握的相关知识。

作为一名全栈工程师,在日常的工作中,可能更侧重于后端开发,如:C#,Java,SQL ,Python等,对前端的知识则不太精通。在一些比较完善的公司或者项目中,一般会搭配前端工程师,UI工程师等,来弥补后端开发的一些前端经验技能上的不足。但并非所有的项目都会有专职前端工程师,在一些小型项目或者初创公司中,职能划分并不明确,往往要一个人前后端全都会做, 所以作为一名全栈工程师或者后端工程师,掌握必备的前端知识,也是必不可少的一项技能。今天就着重讲解一下,作为一名全栈工程师,前端CSS方面的必须要掌握的相关知识。

 

什么是CSS?

 

CSS 指的是层叠样式表 (Cascading Style Sheets),描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素。通俗点讲:CSS是对网页中的标签进行美化的。

 

CSS语法

 

CSS 规则集(rule-set)由选择器和声明块组成:

  1. 选择器指向您需要设置样式的 HTML 元素。
  2. 声明块包含一条或多条用分号分隔的声明。
  3. 每条声明都包含一个 CSS 属性名称和一个值,以冒号分隔。
  4. 多条 CSS 声明用分号分隔,声明块用花括号括起来。

CSS语法示例如下:

本文主要从几个方面进行讲解CSS样式。

 

size尺寸

 

尺寸相关属性主要设置页面中标签样式的大小,边框,边距等信息。如下所示:

  1. width 页面元素宽度,可以设置固定值,如:50px,也可以设置百分比 如:50%
  2. height 页面元素高度,如果内容超过标签元素的高度值,则会溢出。如果需要截断,则需要配合overflow属性进行设置。
  3. max-width 最大宽度,max-height 最大高度
  4. min-wdith 最小宽度,min-height 最小高度
  5. border 边框 可以给3个值,格式为:边框宽度 边框样式 边框颜色。如:1px dotted grey。注意多个值之间用空格隔开。
  6. border-radius 边框四个角的角度半径。默认为直角,可以通过设置此属性为圆角。
  7. padding 内边距,内容和边框之间的距离。可以设置4个值 4px 10px 20px 3px,分别代表:上,右,下,左 四个方向的内边距;
  8. box-sizing 标签大小方式,属性允许我们在元素的总宽度和高度中包括内边距(填充)和边框。默认情况下,标签的整体宽度是width+左右padding+边框。所以如果设置宽度为100%,padding大于0的时候,默认会有滚动条。可以设置此属性为border-box进行解决。
  9. margin 外边距,表示标签与外部标签的距离。默认情况,浏览器会为标签设置默认边距。可通过*{margin:0;padding:0}进行清除默认边距。
  10. margin-bottom/margin-top 底部边距/顶部边距, 表示页面元素底部/顶部与其他元素之间的边距。
  11. margin-left/margin-right 左侧边距/右侧边距,表示页面元素左侧/右侧与其他元素之间的边距。可设置auto自适应,也可以设置固定值。
  12. overflow 内容溢出后的处理方式,如:hidden隐藏。

关于尺寸【边框,边距,内容,宽度,高度】的示意图,如下所示:

 

background背景

 

背景相关属性,主要设置页面标签元素的背景样式,如背景色,背景图等信息,如下所示:

  1. background-color 背景颜色, 如 #f9f9f9;
  2. background-image  背景图片,设置格式: url('图片路径'),图片路径可以是绝对路径,也可以是相对路径,也可以是网络路径。注意背景图和背景色不能同时生效
  3. box-shadow 阴影效果, 格式为:阴影偏移x 阴影偏移y 阴影晕染宽度  阴影颜色 如:5px 5px 5px grey。

 

text文本处理

 

文本处理相关属性,主要设置文本相关内容的属性,如:颜色,字体,字号,加粗,斜体等内容。如下所示:

  1. color 前景颜色,即文字内容的颜色。
  2. text-indent 文本首行缩进,可以设置像素 如:12px;也可以设置缩进字符数,如: 2em。其中设置em可以随着大小自适应。
  3. font-size 字体大小,如:16px。
  4. font-family 设置字体 如:黑体,Arial等。
  5. font-weight 文本粗细 默认normal,主要值为:normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 继承值。
  6. text-align 文本对齐 如:left,right,center
  7. line-height 行高,设置行高可以设置文本在行内的位置。
  8. text-shadow 文本阴影,和box-shadow设置格式一致。
  9. text-decoration 文本装饰,用于设置或删除文本装饰 如:dashed underline grey。
  10. wirting-mode 文本内容的书写模式,定义了文本在水平或垂直方向上如何排布。主要值为:writing-mode: horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr,如:vertical-lr,表示竖着显示,从左往右排列。默认适用于中文。
  11. text-orientation,英文方向,如upright,则英文也会垂直显示。

 

position位置

 

位置相关属性主要设置页面标签元素的左,右,上,下等位置信息,主要通过position进行设置。

position 位置属性,指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型。

  1. absolute 绝对定位,生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。配合top 设置距离上方距离,left 设置距离左侧距离,默认相对于body。可以通过设置父元素的定位方式relatvice相对定位,来改变绝对定位的参考对象。
  2. position fixed固定定位,相对于视口的距离,不会随着页面的拖动而改变。
  3. relative 生成相对定位的元素,相对于其正常位置进行定位。
  4. static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
  5. inherit 规定应该从父元素继承 position 属性的值。

position位置示例

 

layout布局

 

如果我们希望将默认的网页标签呈现效果,更改为我们希望的呈现效果,这种操作就称之为网页布局。在进行布局处理的时候,需要用到布局相关的属性。布局通过display属性【设置元素是否被视为块或者内联元素以及用于子元素的布局,例如流式布局、网格布局或弹性布局】进行设置。

 

1. flex布局

 

flex布局又称弹性布局,它使用flexbox使得容器有了弹性,更加适应各种设备的不同宽度,而不必依赖于传统的块状布局和浮动定位。它是CSS3中新增的规范,目前主流浏览器均已支持。值得一提的是,Flex布局不支持IE9及以下版本。

flex布局中主要包含了以下五个概念:

1. 弹性容器(flex container):采用Flex布局的外层容器。

2. 弹性项(flex item):容器中的子元素。

3. 主轴(main axis): 弹性容器的水平或垂直方向。

4. 交叉轴(cross axis):与主轴垂直的方向。

5. 对齐方式(align):设置弹性项在弹性容器内的对齐方式。

弹性布局常用属性,如下所示:

  1. display 设置flex。是对元素内部标签呈现效果的一种处理。
  2. flex-direction:用于设置主轴的方向。它有四个取值:row:默认值,主轴为水平方向column:主轴为垂直方向row-reverse:主轴为水平方向,但是从右向左排列column-reverse:主轴为垂直方向,但是从下往上排列。
  3. flex-wrap:用于定义弹性容器里的弹性项是否应该换行。它有三个取值:nowrap:默认值,弹性项不换行 wrap:弹性项自动换行,如果需要的话 wrap-reverse:弹性项自动换行,但是倒序排列
  4. align-items: 定义在交叉轴上弹性项的对齐方式。它有五个取值:flex-start:弹性项在交叉轴上从上至下排列flex-end:弹性项在交叉轴上从下至上排列center:弹性项在交叉轴上居中排baseline:每个弹性项都根据其文本基线进行对齐stretch:默认值,弹性项在交叉轴上被拉伸填满弹性容器
  5. justify-content:定义在主轴上弹性项的对齐方式。它有五个取值:flex-start:默认值,弹性项在主轴上从左至右排列flex-end:弹性项在主轴上从右至左排列center:弹性项在主轴上居中排列space-between:弹性项在主轴上平均分布排列,左右两端没有空隙space-around:弹性项在主轴上平均分布排列,各自之间有空隙
  6. align-content:定义弹性容器内的多行弹性项在交叉轴上的对齐方式。它有六个取值:flex-start:弹性项在交叉轴上从上至下排列flex-end:弹性项在交叉轴上从下至上排列center:弹性项在交叉轴上居中排列space-between:弹性项在交叉轴上平均分布排列,每行之间没有空隙space-around:弹性项在交叉轴上平均分布排列,每行之间有空隙stretch:默认值,弹性项在交叉轴上被拉伸填满弹性容器
  7. flex:1布局元素比例。可以通过设置不同内部元素的flex来进一步设置不同区块比例。

通过以上三个属性的设置可以方便的讲内容进行布局,如居中,左上,右上,左下,右下等

 

 

2. grid布局

 

CSS 网格布局(Grid)是一套二维的页面布局系统,它的出现将完全颠覆页面布局的传统方式。

gird布局的基本概念

  1. 容器(container)——有容器属性
  2. 项目(items)——有项目属性
  3. 行(row)
  4. 列(column)
  5. 间距(gap) ——单元格之间的距离
  6. 区域(area)—— 自己划分每个单元格占据的区域
  7. 内容(content)

flex适合一维布局,grid适合二维布局。将内部元素已行列的形式展示

  1. display:grid。
  2. grid-template-columns,列设置,可以设置固定列宽度,如200px 300px 400px等,也可以设置百分比宽度 如:20% 30% 40% 10%等;也可以设置比例,如:1fr 1fr 1fr其中fr是比例的意思。可以设置repeate(3,1fr)或者repeate(auto-fill,200px)等;或者混合设置如:200px auto 200px。
  3. grid-template-rows 行设置。可以设置的内容和列设置一致。
  4. 属性justify-itemsjustify-self 以行轴为参照对齐项目,属性align-itemsalign-self 以列轴为参照对齐项目。

 

综合示例(一)

关于size尺寸,background背景,文本,position位置,布局的综合示例,如下所示:综合示例效果有:文本加粗,颜色,元素内间距,外间距,边框,背景色,位置,flex布局,书写模式等综合应用。效果如下所示:

示例源码Html部分,如下所示:

<!DOCTYPE html><html><head><metacharset="utf-8"/><title></title><linkrel="stylesheet"type="text/css"href="css/index.css"/></head><body><divclass="container"><divclass="article article-v"><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div></div></div><divclass="article article-h"><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div><divclass="poem"><spanclass="title">凉州词</span><spanclass="author">作者 唐,王之涣</span><spanclass="content">黄河远上白云间,</span><spanclass="content">一片孤城万仞山。</span><spanclass="content">羌笛何须怨杨柳,</span><spanclass="content">春风不度玉门关。</span></div></div></div></body></html>

示例源码css部分,如下所示:

*{
padding: 0px;
margin: 0px;
}
.container{
width: 100%;
}
.article{
margin-top: 10px;
width: 100%;
padding: 10px;
display: flex;
box-sizing: border-box;
flex-wrap: wrap;
flex:1;
flex-direction: row;
justify-content: center;
}
.article.poem{
border: 1px;
border-style: dotted;
border-color: #f9f9f9;
border-radius: 2px;
margin: 4px;
width: 15%;
}
.article-v.poem{
background-color: goldenrod;
display: flex;
}
.article.poemspan{
padding:4px;
margin: 4px;
letter-spacing: 6px;
color: #F9F9F9;
font-family: Arial, Helvetica, sans-serif;
}
.article.poem.title{
display: block;
font-size: larger;
font-weight: bolder;
}
.article.poem.author{
display: block;
font-size: large;
font-weight: bold;
}
.article.poem.content{
display: block;
font-size: 18px;
}
.article-v.poem.title{
writing-mode: vertical-lr;
}
.article-v.poem.author{
writing-mode: vertical-lr;
}
.article-v.poem.content{
writing-mode: vertical-lr;
}
.article-h.poem{
background-color: darkblue;
display: block;
}

 

transition 过渡

 

CSS 过渡允许您在给定的时间内平滑地改变属性值。主要设置属性,如下所示:

  1. transition    简写属性,用于将四个过渡属性设置为单一属性。格式:属性1 时间 运动模式,属性2 时间 运动模式等,其中运动模式可以省略,默认匀速变换,如:width 1s,即宽度在1秒内完成,而不是瞬间完成。不仅可以指定具体属性,也可以用all代表所有属性,如:all 2s。运动模式默认为Linear线性变换,还可以有其他值,如: ease-in , ease-in-out等。
  2. transition-delay    规定过渡效果的延迟(以秒计)。
  3. transition-duration    规定过渡效果要持续多少秒或毫秒。
  4. transition-property    规定过渡效果所针对的 CSS 属性的名称。
  5. transition-timing-function    规定过渡效果的速度曲线。

 

transform变换

 

1. 2D变换

 

transform设置变换,一般设置2D变换

  1. translate设置位移,设置在x轴,y轴方向上的移动,如translate(200px,300px)。也可以分开设置TranslateX(200px),translateY(200px)。
  2. rotate,设置旋转,如rotate(30deg),默认以中心旋转。
  3. transform-origin 变换中心,如:center,right ,bottom等。此属性一般设置在元素本身的属性中,而不是设置在交互变换效果样式中。
  4. scale 缩放,元素的缩放 如scale(0.5)是x轴,y轴方向的缩放。也可以设置两个值,分别控制缩放的比例,如scale(1,2)。
  5. skew 倾斜,可以设置在x轴,y轴方向上的倾斜如:skew(20deg)。也可以分别进行设置,如skew(10deg,20deg)

 

2. 3D变换

 

3D变换,一般设定一个容器,即容器内容的子元素进行3D方式进行渲染展示,容器外的默认2D展示。

  1. transform-style:preserve-3d设置容器内容进行3D渲染。
  2. perspective 设置景深,即视口与观察者之间的距离。
  3. translate3d设置3D位移转换,如translate3d(100px,0,0)设置
  4. rotate3D,设置3D的选择,如rotate(0,0,0,100deg),前3个参数表示x,y,z三个轴上是否生效,1表示生效,0表示不生效。第4个参数表示角度。

 

animation动画

 

CSS动画使元素逐渐从一种样式变为另一种样式。您可以随意更改任意数量的 CSS 属性。如需使用 CSS 动画,您必须首先为动画指定一些关键帧。关键帧包含元素在特定时间所拥有的样式。

动画相关属性,如下所示:

  1. @keyframes   定义关键帧动画,规定动画模式。
  2. animation    设置所有动画属性的简写属性,格式:animation 关键帧名称 时长 infinite 动画模式
  3. animation-delay    规定动画开始的延迟。
  4. animation-direction    定动画是向前播放、向后播放还是交替播放。
  5. animation-duration    规定动画完成一个周期应花费的时间。
  6. animation-fill-mode    规定元素在不播放动画时的样式(在开始前、结束后,或两者同时)。
  7. animation-iteration-count    规定动画应播放的次数。
  8. animation-name    规定 @keyframes 动画的名称。
  9. animation-play-state    规定动画是运行还是暂停。
  10. animation-timing-function    规定动画的速度曲线。

 

综合示例(二)

 

综合示例2主要应用过渡,变换,动画等效果,如下所示:

示例源码Html如下所示:

<!DOCTYPE html><html><head><metacharset="utf-8"><title></title><linkrel="stylesheet"type="text/css"href="css/index2.css"/></head><body><divclass="container"><divclass="box"><divclass="one">我在后面</div><divclass="two">我在前面</div></div></div></body></html>

示例源码CSS部分,如下所示:

.{
margin: 0px;
padding:0px;
}
.container{
position: absolute;
left: 50px;
top: 50px;
transform-style: preserve-3d;
perspective: 500px;
transform-origin: center;
}
.containerdiv{
width: 200px;
height: 200px;
}
.container.box{
transform-style: preserve-3d;
perspective: 500px;
transform-origin: center;
transition: all1s;
animation: xuanzhuan5slinearinfinite;
}
.container.boxdiv{
position: absolute;
left: 0px;
top:0px;
line-height: 200px;
text-align: center;
}
.container.box.one{
transform: translate3d(0,0,-50px);
border: 1pxsolidgray;
background-color: beige;
}
.container.box.two{
border: 1pxsolidgray;
background-color: red;
}
@keyframesxuanzhuan{
from{
transform: rotate3d(0,1,0,0deg);
  }
to{
transform: rotate3d(0,1,0,360deg);
  }
}

以上就是全栈工程师必须要掌握的前端CSS技能的全部内容。希望可以抛砖引玉,一起学习,共同进步。

相关实践学习
基于ACK Serverless轻松部署企业级Stable Diffusion
本实验指导您在容器服务Serverless版(以下简称 ACK Serverless )中,通过Knative部署满足企业级弹性需求的Stable Diffusion服务。同时通过对该服务进行压测实验,体验ACK Serverless 弹性能力。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
19 6
|
23天前
|
Web App开发 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用CSS3,打造炫酷视觉效果!
【10月更文挑战第31天】前端开发面临复杂布局的挑战,本文介绍了几种提升开发效率和代码质量的工具和技术。基础的HTML和CSS可以应对大部分布局需求,而Firefox开发者工具、VS Code、Vue、React等则能应对更复杂的布局,帮助开发者构建高性能、用户友好的网页应用。
25 4
|
2月前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
195 1
|
3月前
|
前端开发
前端基础(九)_CSS的三大特征
本文详细解释了CSS的三大特性:层叠性、继承性和优先级,并通过实例演示了样式冲突、叠加和选择器优先级的应用。
30 2
前端基础(九)_CSS的三大特征
|
2月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
2月前
|
前端开发 UED 容器
前端技术分享:利用 CSS Grid 实现响应式布局
【10月更文挑战第1天】前端技术分享:利用 CSS Grid 实现响应式布局
63 2
|
2月前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)2
【前端基础篇】CSS基础速通万字介绍(上篇)
25 2
|
2月前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)3
【前端基础篇】CSS基础速通万字介绍(上篇)
19 1
|
2月前
|
缓存 前端开发 JavaScript
【前端基础篇】CSS基础速通万字介绍(上篇)1
【前端基础篇】CSS基础速通万字介绍(上篇)
18 1
|
2月前
|
前端开发 API 开发者
🥇前端宝藏:多项目掌握技能的冒险之旅🏆
在前端开发的学习旅程中,实践是提升技能的关键。本文介绍了多个前端项目,包括计算器、天气应用、经典游戏等,涵盖了从React到Svelte的各种技术栈。每个项目都附有在线演示和源代码,旨在帮助读者深入理解实现细节,激励更多人参与实际项目开发。通过这些项目,读者可以将理论知识转化为实践,拓展职业机会。
19 0