CSS实践详解总结

简介: CSS实践详解总结
.shaw {
    box-shadow: 0px 4px 6px #ccc;
}

【1】CSS选择器

① 类选择器

1.后代选择

使用类选择器选择父类下面的所有后代。

#这里是父类与子类选择器
.wrapper-item .layui-form-label{
     width: 25%;
 }
<div class="wrapper-item">
  <label for="name" class="layui-form-label">
        <span class="we-red">*</span>姓名
    </label>
</div>

使用类选择器选择后代中某个标签元素

#父类与子标签
.myitem span{
    padding: 5px 0px;
}
<div v-for="item in myscoreList" class="list-group-item myitem "  >
    <span style="width: 10%">{{item.userName}}</span>
    <span style="width: 10%">{{item.courseName}}</span>
    <span style="width: 10%">{{item.score}}</span>
    <span style="width: 50%">{{item.appraise}}</span>
    <span style="width: 10%">{{item.createTime}}</span>
    <span style="width: 10%" class="mydel">删除</span>
</div>

使用类选择器选择后代中多个标签

<!-- 选择class为input-group的后代div input-->
.input-group div,input{
    margin: 0 0.5rem;
}
<div class="input-group">
    <label>选择平台:</label>
    <div>
        <input type="checkbox" class="form-check-input check-box" name="platform" value="天猫" title="天猫"/>天猫
    </div>
    <div>
        <input type="checkbox" class="form-check-input" name="platform" value="京东" title="京东"/>京东
    </div>
    <div>
        <input type="checkbox" class="form-check-input" name="platform" value="拼多多" title="拼多多"/>拼多多
    </div>
</div>

2.类与元素结合

选择元素class属性中包含某个class的元素

label.wrapper-item {
     width: 25%;
 }
<label for="name" class="layui-form-label">
  <span class="we-red">*</span>姓名
</label>

定义带有某个class属性的a标签的hover状态

a.duihuan:hover{
  opacity: 0.8;
  color: white;
}
<a v-if="userId!=''" class="duihuan">我要兑换</a>

【2】那些定位

① position

position有3个属性是我们平常用的最多的,即fixed,absolute,relative。定位基本遵循“子绝父相” ,子元素绝对定位,父元素相对定位。


① absolute

绝对定位,是相当于父元素(或者父父元素)的定位,不遵循文档流;也不占据空间。后来者居上,后边的元素会被顶到它使用绝对定位之前的位置。


② relative

相对定位,是相当于定位之前自身的位置,遵循文档流,定位之前的区域不会被顶替,还在原来占据着位置。定位之后的区域,不占据任何位置

③ fixed

固定定位,顾名思义,会固定在某一个位置,是相对于浏览器窗口的定位。不遵循文档流。用的最多的是APP等软件搜索框固定在最头上、最顶部,网页两端的广告固定。

什么是文档流?

文档流是从代码中,块级元素按照从上到下、行内元素从左到右顺序执行代码的流程。

④ 浮动Float

  • 相当于绝对定位,脱离文档流/
  • 浮动的属性常用包括left、right
  • 相对定位可以和浮动一起用,绝对定位和浮动一起使用会把浮动效果删除。

【3】@media


CSS中@规则是由@符号开始的,例如@import,@page等。@media就是其中的一个规则。

@media可以让你根据不同的屏幕大小而使用不同的样式,这可以使得不需要js代码就能实现响应式布局。

不过@media只能用于较新的浏览器,对于老式的IE,不支持。


@media的语法比较简单,一眼就能看懂。

@media mediatype and|not|only (media feature) {
    CSS-Code; 
}

实例一:当屏幕高度大于900时,设置某个div高度

@media only screen and (min-height:900px)  {
    .banner {
        height: 800px;
    }
}

【3】段落文本

① 多行截取

如限制两行,多余备份截取用...替代:

.multi-line {
  font-size: 16px;
  height: 44px;
  width:400px;
  display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */
  -webkit-box-orient: vertical; /*  从上到下垂直排列子元素(设置伸缩盒子的子元素排列方式) */
  -webkit-line-clamp: 2; /* 这个属性不是css的规范属性,需要组合上面两个属性,表示显示的行数 */
  overflow: hidden;/* 超出的文本隐藏 */
  text-overflow: ellipsis; /* 溢出用省略号显示 */
}
.multi-line {
  min-height: 2em;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    text-overflow: clip;
    overflow: hidden;
}

② 单行截取

// 单行截取
.single-line {
    width:400px;
    overflow:hidden;  /*超过部分不显示*/
    text-overflow:ellipsis;  /*超过部分用点点表示*/
    white-space:nowrap;/*不换行*/
}

white-space: nowrap; 规定段落中的文本不进行换行:

text-overflow: ellipsis;显示省略符号来代表被修剪的文本。

③ 文字换行

<div style="width=100px;word-break:break-all; word-wrap:break-word;white-space:pre-wrap;">
这里是文字内容
</div>

white-space

这个属性声明建立布局过程中如何处理元素中的空白符。

  • pre-wrap表示:保留空白符序列,但是正常地进行换行。
  • 默认值normal表示:空白会被浏览器忽略。


自动换行 word-break:break-all和word-wrap:break-word


一般这两个属性都会加上 height-auto;white-space:normal;


共同点:word-break:break-all和word-wrap:break-word都是能使其容器如DIV的内容自动换行。


不同点:


word-break:break-all 例如div宽200px,它的内容就会到200px自动换行,如果该行末端有个英文单词很长(congratulation等),它会把单词截断,变成该行末端为conra(congratulation的前端部分),下一行为tulation(conguatulation)的后端部分了。

word-wrap:break-word 例子与上面一样,但区别就是它会把congratulation整个单词看成一个整体,如果该行末端宽度不够显示整个单词,它会自动把整个单词放到下一行,而不会把单词截断掉的。


【4】动画

① jQuery scrollTop() 方法

返回 <div> 元素的垂直滚动条位置:

$("button").click(function(){
    alert($("div").scrollTop());
});


定义和用法


scrollTop() 方法设置或返回被选元素的垂直滚动条位置。

提示:当滚动条位于最顶部时,位置是 0。

当用于返回位置时:该方法返回第一个匹配元素的滚动条的垂直位置。

当用于设置位置时:该方法设置所有匹配元素的滚动条的垂直位置。


语法

//返回垂直滚动条位置:
$(selector).scrollTop()
//设置垂直滚动条位置:
$(selector).scrollTop(position)

② CSS transition 属性

把鼠标指针放到 div 元素上,其宽度会从 100px 逐渐变为 300px:

div
{
  width:100px;
  transition: width 2s;
  -moz-transition: width 2s; /* Firefox 4 */
  -webkit-transition: width 2s; /* Safari 和 Chrome */
  -o-transition: width 2s; /* Opera */
}
div:hover {width:300px;}

transition 属性是一个简写属性,用于设置四个过渡属性:


transition-property:规定设置过渡效果的 CSS 属性的名称。

transition-duration:规定完成过渡效果需要多少秒或毫秒。

transition-timing-function:规定速度效果的速度曲线。

transition-delay:定义过渡效果何时开始。

③ CSS transform缩放

div.product-image{
    overflow: hidden;
    margin-bottom: 40px;
}
div.product-image img{
    transition: all 0.6s;
    height: 100px;
    width: 200px;
}
div.product-image img:hover{
    transform: scale(1.2);
}
<div th:if="${goods!=null}" class="product-image">
  <img th:src="${'/file/fileDown?saveName='+goods.goodsPic1}" >
  <span style="font-size: 20px;">[[${goods.name}]]</span>
  <span>价格:<span>[[${goods.price}]]</span></span>
  <a class="purchase">购买</a>
</div>

在CSS3中,我们可以使用transform属性的scale()方法来实现元素的缩放效果。缩放,指的是“缩小”和“放大”的意思。


跟translate()方法类似,缩放也有3种情况:scaleX()、scaleY()、scale()。参数x表示元素在x轴方向的缩放倍数,参数y表示元素在y轴方向的缩放倍数。


当x或y取值为0~1之间时,元素进行缩小;当x或y取值大于1时,元素进行放大

④ animation实现消息左右滚动

.messageBox p{
     overflow:hidden;
     animation-name: HMove;
     animation-duration: 3s;
     animation-iteration-count: infinite;
     animation-direction: alternate;
 }
 @keyframes HMove{
     from {transform:translateX(0px);}
     to {transform:translateX(100px);}
 }
 //鼠标悬停事件,使动画停止
 .messageBox p:hover{
     cursor: pointer;
     animation-play-state:paused;
     color: #1E9FFF;
 }
<div class="messageBox">
    <p>您有一条新消息,点击查看</p>
</div>

效果如下图箭头所示,会左右滚动。

【5】修改标签样式

① input

修改placeholder样式:

input::-webkit-input-placeholder {
    color: #aab2bd;
    font-size: 12px;
}

设置文字居中:

input{
    text-align: center;
}

② 边框/盒子阴影

box-shadow 向框添加一个或多个阴影。该属性是由逗号分隔的阴影列表,每个阴影由 2-4 个长度值、可选的颜色值以及可选的 inset 关键词来规定。省略长度的值是 0。



语法:

box-shadow: h-shadow v-shadow blur spread color inset
描述
h-shadow 必需。水平阴影的位置。允许负值
v-shadow 必需。垂直阴影的位置。允许负值
blur 可选。模糊距离
spread 可选。阴影的尺寸
color 可选。阴影的颜色
inset 可选。将外部阴影 (outset) 改为内部阴影

.dianyingjjdiv{
  box-shadow: 1px 1px 5px 3px #eeeeee;
  padding:15px;
}

在Chrome上解析如下:

显式效果如下:

③ 渐变背景色

background: linear-gradient(to right, rgb(17, 112, 210), rgb(8, 179, 68)), rgb(17, 112, 210);

【6】宽高自适应

① vw和vh

width: 1vw; 等于  可视窗口   宽度的1%
height: 1vh; 等于  可视窗口  高度的1%


calc()使用通用的数学运算规则,但是也提供更智能的功能:


使用“+”、“-”、“*” 和 “/”四则运算;

可以使用百分比、px、em、rem等单位;

可以混合使用各种单位进行计算;

表达式中有“+”和“-”时,其前后必须要有空格,如"widht: calc(12%+5em)"这种没有空格的写法是错误的;

表达式中有“*”和“/”时,其前后可以没有空格,但建议留有空格。

例如 :设置div元素的高度为当前窗口高度-100px

div{
  height: calc(100vh - 100px);     
}

② 子左右dIV自动等高

如下所示,父div有两个子div,在保证左右排列的前提下想要使其自动等高。

<div class="wrap ">
  <div></div>
  <div></div>
</div>

这里推荐使用css3盒模型 display:box


不同的浏览器要做不同的兼容:目前box-flex属性还没有得到firefox、Opera、chrome浏览器的完全支持,但可以使用它们的私有属性定义firefox(-moz)、opera(-0)、chrome/safari(-webkit)。


.wrap 
{ 
  display: -webkit-box; 
  overflow: hidden; 
  width: 100%; 
  margin: 10px auto; 
} 

其中with以及子div的排列样式根据需要自己调整。

【7】flex布局

① 两端对齐

比如 要求ul下的li每行四个,中间间隔但是需要两段对齐,如下图所示:


这是除了基本的flex布局外,还需要用到:nth-of-type伪类来控制每行第一个与第四个的padding。

.hl_list{
    width: 100%;
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .ul_list .hl_list li{
    width: 25%;
    padding: 0 10px;
  }
  .ul_list .hl_list li:nth-of-type(4n+1){
    padding-left: 0;
  }
  .ul_list .hl_list li:nth-of-type(4n+4){
    padding-right: 0;
  }


② 单行截取多余的

display: flex;
flex-wrap: nowrap;
overflow-x: hidden;

flex-wrap: nowrap;规定item不换行。

overflow-x: hidden;规定X轴的超出隐藏


③ 子元素宽度不变

父元素设置flex布局,需要保证某个子元素宽度不变,可以为子元素设置属性如下:

flex-shrink: 0

子元素不设置 flex-shrink: 0 时子元素会随父元素宽度自动等分总宽度,子元素设置的宽度会自动失效

目录
相关文章
|
7月前
|
前端开发 开发者
通过实践来提升CSS动画技能是非常重要的
【7月更文挑战第1天】通过实践来提升CSS动画技能是非常重要的
47 1
|
9月前
|
存储 移动开发 前端开发
使用HTML5和CSS3构建现代网页:技术详解与实践
【5月更文挑战第28天】本文详细介绍了使用HTML5和CSS3构建现代网页的技术与实践。HTML5新增语义化标签、多媒体支持、本地存储和表单验证等功能,提升了网页开发效率和用户体验。CSS3则带来了更多选择器、盒模型改进、背景与边框样式以及动画过渡效果,使网页设计更具视觉冲击力。通过实例展示了如何结合两者创建结构清晰、交互丰富、响应式的现代网页。
|
9月前
|
前端开发
实践任务:项目介绍与项目准备+制作网页头部和导航+制作banner和最新更新栏目+制作苹果之家栏目+制作底部版权区域与CSS代码优化+制作Apple独家栏目
实践任务:项目介绍与项目准备+制作网页头部和导航+制作banner和最新更新栏目+制作苹果之家栏目+制作底部版权区域与CSS代码优化+制作Apple独家栏目
64 1
|
9月前
|
移动开发 缓存 前端开发
【专栏:HTML与CSS实践篇】网页性能优化:CSS与HTML的最佳实践
【4月更文挑战第30天】本文探讨了优化CSS和HTML以提升网页性能的最佳实践。HTML优化包括:精简结构、压缩代码、异步加载脚本和利用缓存。CSS优化则涉及:精简代码、合并文件、使用CSS Sprite、善用CSS3属性、避免@import及响应式设计。这些方法能加快加载速度,改善用户体验。
112 6
|
9月前
|
移动开发 前端开发 JavaScript
:掌握移动端开发:HTML5 与 CSS3 的高效实践
:掌握移动端开发:HTML5 与 CSS3 的高效实践 “【5月更文挑战第6天】”
119 1
|
9月前
|
移动开发 前端开发 UED
【专栏:HTML与CSS前端技术趋势篇】渐进式增强与优雅降级在前端开发中的实践
【4月更文挑战第30天】前端开发中的渐进式增强和优雅降级是确保跨浏览器、跨设备良好用户体验的关键策略。渐进式增强是从基础功能开始,逐步增加高级特性,保证所有用户能访问基本内容;而优雅降级则是从完整版本出发,向下兼容,确保低版本浏览器仍能使用基本功能。实践中,遵循HTML5/CSS3规范,使用流式布局和响应式设计,检测浏览器特性,并提供备选方案,都是实现这两种策略的有效方法。选择合适策略优化网站,提升用户体验。
133 4
|
9月前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS实践篇】CSS框架(Bootstrap/Foundation)快速上手
【4月更文挑战第30天】Bootstrap和Foundation是两种流行的CSS框架,用于构建响应式网页。它们包含预定义的样式、栅格系统和组件,加速开发流程。Bootstrap以其12列栅格系统闻名,而Foundation提供更定制化和模块化选项。了解并熟练运用这些框架的基本概念和组件,结合最佳实践和性能优化,能帮助开发者高效创建符合现代设计趋势的网页项目。
154 3
|
9月前
|
编解码 前端开发 UED
【专栏:HTML 与 CSS 实践篇】网页图标与字体图标的使用
【4月更文挑战第30天】本文探讨了网页设计中两种主要图标形式——传统图标和字体图标。传统图标(PNG, JPEG, GIF)视觉效果丰富但文件大,易影响加载速度且维护不便。字体图标占用空间小,易于维护和定制,但视觉效果相对简单,选择有限。实际应用中,两者可结合使用,以导航栏、操作按钮和提示信息为例说明了图标的重要性。设计师需注意兼容性、清晰度和性能优化问题,根据项目需求选择合适图标类型,以提升网页质量和用户体验。
110 3
|
9月前
|
编解码 前端开发 UED
【专栏:HTML与CSS实践篇】HTML与CSS在电商网站中的应用
【4月更文挑战第30天】本文探讨了HTML和CSS在电商网站中的关键作用。HTML作为基础结构,定义网页内容和布局,用于页面布局、内容展示和表单处理;而CSS则负责样式设计和美化,包括响应式设计、交互效果和模块化,两者结合创建出功能齐全、视觉吸引力强的在线购物环境,提升用户体验。
145 2
|
9月前
|
编解码 前端开发 UED
【专栏:HTML与CSS实践篇】响应式网站开发实战
【4月更文挑战第30天】本文探讨了响应式网站开发,它能根据用户设备自动调整布局,提供最佳浏览体验。通过HTML和CSS,利用媒体查询、Flexbox和百分比宽度等技术实现响应式设计。媒体查询按屏幕尺寸定义CSS规则,Flexbox处理元素排列。文章通过新闻网站首页设计实例,展示了如何应用这些理论,包括使用Flexbox设计导航栏,使用媒体查询调整轮播图和内容区域,以及创建自适应页脚。遵循移动优先原则,关注性能优化和用户体验,响应式设计是前端开发的关键,为多设备用户提供优质浏览体验。
131 2

热门文章

最新文章