全栈工程师必须要掌握的前端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 属性的值。

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-items 和 justify-self 以行轴为参照对齐项目,属性align-items 和 align-self 以列轴为参照对齐项目。

综合示例(一)

关于size尺寸,background背景,文本,position位置,布局的综合示例,如下所示:

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

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

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title><link rel="stylesheet" type="text/css" href="css/index.css"  /></head><body><div class="container"><div class="article article-v"><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div></div></div><div class="article article-h"><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="content">春风不度玉门关。</span></div><div class="poem"><span class="title">凉州词</span><span class="author">作者 唐,王之涣</span><span class="content">黄河远上白云间,</span><span class="content">一片孤城万仞山。</span><span class="content">羌笛何须怨杨柳,</span><span class="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 .poem span{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><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="css/index2.css" /></head><body><div class="container"><div class="box"><div class="one">我在后面</div><div class="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;
}
.container div{width: 200px;height: 200px;
}
.container .box{transform-style: preserve-3d;perspective: 500px;transform-origin: center;transition: all 1s;animation: xuanzhuan 5s linear infinite;
}
.container .box div{position: absolute;left: 0px;top:0px;line-height: 200px;text-align: center;
}
.container .box .one{transform: translate3d(0,0,-50px);border: 1px solid gray;background-color: beige;
}
.container .box .two{border: 1px solid gray;background-color: red;
}@keyframes xuanzhuan{from{transform: rotate3d(0,1,0,0deg);}to{transform: rotate3d(0,1,0,360deg);}
}

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107254.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外商城小程序如何开发

随着全球化的发展和人们对跨境购物的需求逐渐增加&#xff0c;海外商城小程序成为了众多电商平台的重要组成部分。本文将深入探讨如何搭建海外商城小程序&#xff0c;从技术实现到用户体验设计&#xff0c;为开发者提供专业且有深度的思考&#xff0c;以帮助他们打造出色的跨境…

U3D外包开发框架及特点

U3D&#xff08;Unity3D&#xff09;是一款流行的跨平台游戏开发引擎&#xff0c;用于创建2D和3D游戏以及交互性应用程序。U3D有许多常用的开发框架和库&#xff0c;这些框架和库可以扩展其功能&#xff0c;使开发人员更轻松地构建游戏和应用程序。以下是一些常用的U3D开发框架…

【校招VIP】测试技术考点之单元测试集成测试

考点介绍&#xff1a; 单元测试,集成测试的区别是&#xff1a;方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…

C#进阶 多个泛型约束

using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine;public class A02_Generic : MonoBehaviour {[ContextMenu("测试Start")]// Start is called before the first frame updatevoid Start(){Person…

Linux编辑器-vim使用

文章目录 前言一、vim编辑器1、vim的基本概念2、vim的基本操作2.1 命令模式切换至插入模式2.2 插入模式切换至命令模式2.3 命令模式切换至底行模式 3、vim命令模式命令集3.1 移动光标3.2 删除文字3.3 复制与粘贴3.4 替换3.5 撤销上一次操作3.6 更改3.7 跳至指定的行 4、vim末行…

织密安全防线——记建行江门市分行推进反洗钱工作

建行广东省江门市分行多层次织密反洗钱防线&#xff0c;持续护航高质量发展。 健全架构 建行江门分行成立以“一把手”为组长的反洗钱工作领导小组。通过在部门、支行、网点层面分别设置反洗钱合规官、合规专员、情报专员、合规员等岗位&#xff0c;层层织密反洗钱防线。持续加…

【算法基础】时间复杂度和空间复杂度

目录 1 算法的评价 2 算法复杂度 2.1 时间复杂度&#xff08;Time Complexity&#xff09; 2.1.1 如何计算时间复杂度&#xff1a; 2.1.2 常见的时间复杂度类别与示例 2.2 空间复杂度 2.2.1 如何计算空间复杂度 2.2.2 常见的空间复杂度与示例 3 时间复杂度和空间复杂度…

opencv识别一张图片的多个红框,并截取红框的内容

需求 需要获取图片的红框的内容&#xff0c;实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…

【算法】反悔贪心

文章目录 反悔贪心力扣题目列表630. 课程表 III871. 最低加油次数LCP 30. 魔塔游戏2813. 子序列最大优雅度 洛谷题目列表P2949 [USACO09OPEN] Work Scheduling GP1209 [USACO1.3] 修理牛棚 Barn RepairP2123 皇后游戏&#xff08;&#x1f6b9;省选/NOI− TODO&#xff09; 相关…

Anaconda彻底卸载及重安装

一、彻底卸载Anaconda 1.1 先采用anaconda-clean包初步卸载 总体卸载思路&#xff1a;通过下载anaconda-clean包完成初步卸载&#xff0c;但由于在base下若下载anaconda-clean包会一直卡在Solving environment:阶段&#xff0c;因此首先要创建一个虚拟环境。具体步骤如下&…

ARM Linux DIY(八)USB 调试

前言 V3s 带有一个 USB 接口&#xff0c;将其设置为 HOST 或 OTG 模式&#xff0c;这样可以用来接入键盘、鼠标等 USB 外设。 USB 简介 USB 有两种设备&#xff1a;HOST 和 USB 功能设备。 在 USB2.0 中又引入了一个新的概念 OTG&#xff0c;即设备角色可以动态切换。 切换方…

安全基础 --- 原型链污染

原型链 大部分面向对象的编程语言&#xff0c;都是通过“类”&#xff08;class&#xff09;实现对象的继承。传统上&#xff0c;JavaScript 语言的继承不通过 class&#xff0c;而是通过“原型对象”&#xff08;prototype&#xff09;实现 1、prototype 属性的作用 JavaScri…