css高级篇学习two

一、图片样式练习

  • 制作一个居中的,带圆角边框的,链接图片。
<style>
.imgstyle{
display: inline-block;
 /* 使其成为行内块元素,然后才能有居中操作
 这里不能为块元素,因为块元素居中不定位要靠外边距,但是又因为有链接,
 外边距又是图片的一部分,所以当鼠标移上去时,鼠标样式也会改变
 行内块元素,外边距默认为零 */
width: 30%;/* 将元素的宽设置为视口的30%,所谓响应是编程 */
border-radius: 50%; /* 圆角圆到该程度,就会变成圆或椭圆 */
border: 3px solid orange; 
opacity: 0.8;  /* 为图片添加透明效果 */
}
.boxyou{
 text-align: center; 
 /* 因为图片设置为了行内元素,所以需要居中就需要一个容器,然后在容器中使用该属性水平居中图像 */
position: relative; /* 开启相对定位,为div中文本在图片居中创造父类条件 */
}
#textimg{
position: absolute;/* 让文本靠图片居中 */
left: 45%;
top: 50%;
color: white;
}
</style>
-------------------------------------------------------------------------------
<div class="boxyou">
<a href="../imgs/yourName.jpg">
<img alt="lianxi" src="../imgs/yourName.jpg" class="imgstyle">
</a>
<div id="textimg">你的名字</div>
</div>

  •  图像的滤镜效果
  1. 属性名是filter,属性值见下:
    none没有滤镜
    opcity(%)跟透明度类似,该滤镜的百分比越大,越不透明。
    brightness(%)设置图片的不透明度,100%默认值是原图,0%变成全黑
    contrast(%)

    设置图片的对比度,0%全黑,100%原图,

    超过100%将提供更强烈的对比效果

    drop-shadow(h-shadow,v-shadow,blur,spread)

    h-shadow和v-shadow代表水平方向的阴影和垂直方向的阴影,如果是负值就是左边和上边

    blur增加阴影的模糊程度,用px值

    spread,用来扩大阴影和缩小阴影,用px值,正值扩大,负值缩小。

    grayscale(%)设置图像的灰度,100%完全变成黑白照片
    hue-rotate(deg)

    图像的色相旋转,

    0deg为默认值,最大值为360deg

    invert(%)翻转图像:100%代表完全翻转,0%代表原始图像。
    saturate(%)图像的饱和度,饱和度超过100%时将会提供更强烈地饱和效果。
    sepia(%)将图像设置为棕褐色100%变成完全的棕褐色。
    initial将此属性的值设置为默认值,即none
    inherit从父类继承该属性。

    上面的滤镜值可以叠加使用,用空格隔开。

(注意)论position定位基点和transform中translate定位基点与元素定位后居中的实现

  • position:relative 开启了相对定位的元素开始移动,基点是在元素的右上角,当使用百分比来给left赋值时,以父元素为参照。(这样就导致了当给元素设置left:50%,right:50%时,元素并不能真正居中)
  • transform: translate(x1%,y1%)  元素的转换中,translate移动是相对于元素正中点,所以这个特性刚好可以和relative结合实现居中。(只需要追加translate(-50%,-50%)即可实现居中。
<style>
.container{
width:30%;
height: auto;
background-color: green;
position: relative;
left: 50%;
top: 50%;
transform: translate(-50%,0%);
}
.myimg{
width: 100%;
display: block;
margin: 0px;
}
body{
margin: 0px;
}
</style>
-------------------------------------------------
<body>
<div class="container">
<img alt="lianxi" src="../imgs/lingya2.webp" class="myimg">
</div>
</body>
  • 实现图片鼠标在其上则有文本缓慢覆盖图片的效果。
  1. 设计思路,首先要有个大容器,大容器中包含图片,文本,文本又要被包含,所以一共四个标签,文本的容器和文本都要完全定位,这样脱离文档流之后才能实现覆盖图片,而不影响图片位置。
  2. <!DOCTYPE html>
    <html>
    <head>
    <style>
    .container{
    width:30%;
    height: auto;
    background-color: green;
    position: relative; /* 开启相对定位,作为文本box定位的参照父元素 */
    left: 50%;
    top: 50%;
    transform: translate(-50%,0%);/* 实现居中的操作 */
    }
    .myimg{
    width: 100%;
    display: block; /* 图片元素本身不是块元素 */
    margin: 0px;
    }
    .overdown{
    position: absolute;
    width:100%;
    bottom: 100%;  /* 默认文本容器在图片上,不露出,当鼠标点击后才露出 */
    height:0%;   /* 高度为零,可以在鼠标在其上时更加体现个高度变化 */
    overflow: hidden; /* 该容器现在是一条线,所以其中的文本居中后会超出边框,要隐藏 */
    background-color: green;
    transition: 0.5s ease 0s; /* 过渡效果,应该加在这里,要是加载hover上,只有hover时才有过渡效果,鼠标移出时闪回图片 */
    }
    .textme{
     position: absolute;
     color: white;
     white-space: nowrap;  /* 空白的处理方式 */
     font-size: 32px;
     left: 50%;
     top: 50%;
     transform: translate(-50%,-50%);/* 文本居中 */
    }
    .container:hover .overdown{
      bottom: 0%;
      height: 100%;
    }
    body{
    margin: 0px;
    }
    </style>
    <meta charset="UTF-8">
    <title>css高级篇后半程的学习</title>
    </head>
    <body>
    <div class="container">
    <img alt="lianxi" src="../imgs/lingya2.webp" class="myimg">
    <div class="overdown">
     <div class="textme">青春的气息</div>
    </div>
    </div>
    </body>
    </html>

    二、按钮样式练习 

  • 在图片下方添加四个按钮的按钮组,要求要用到一切可能的样式
  1.  
    <style>
    .containerzong{
    text-align: center; /* 让按钮居中 */
    }
    .buttonone{
      font-size: 16px;
      background-color: orange;
      border-radius: 7px;
      border: 1px solid orange;
      display: inline-block;
      box-shadow: 7px 7px 7px red;  
    }
    .buttonone:active{
     box-shadow: 3px 3px 3px red; /* 当点击鼠标时,阴影缩小即出现点击效果 */
    }
    .buttonone:hover::after{
      content: "》" /* 当鼠标悬停到按钮上时,添加内容》 */
    }
    </style>
    --------------------------------------------------------
    <div class="containerzong">
    		<div class="container">
    			<img alt="lianxi" src="../imgs/lingya2.webp" class="myimg">
    			<div class="overdown">
    				<div class="textme">青春的气息</div>
    			</div>
    		</div>
    	  <button class="buttonone">按钮一</button>
    	  <button class="buttonone">按钮二</button>
    	  <button class="buttonone">按钮三</button>
    	  <button class="buttonone">按钮四</button>
    	</div>

三、分页外观制作

<style>
#agvcontainer{
 margin: 10px auto;
 text-align: center;
 font-size: 20px;
}
#agvcontainer a{
 display: inline-block;
 color: black;
 padding: 0px 20px 0px 20px;
 text-decoration: none;
}
#agvcontainer a:hover{
 background-color: green;
}
</style>
----------------------------------
<div id="agvcontainer">
	<span>«</span>
	<a>1</a>
	<a>2</a>
	<a>3</a>
	<a>4</a>
	<span>»</span>
	</div>

 四、元素中文本的多列和用户界面相关属性

  • 就是在元素中都有的属性,可以使元素中的文本分列,并且可以设置列的样式。
  • 这些属性如下:
column-fillauto|balance

规定元素文本分列中文本的填充模式

自动填充根据文本先后顺序填充

尽量保持列之间文本长度的差异最小化

column-count数值

指定文本分列的列数

column-widthpx或%

指定文本每列的最佳宽度,主要在缩放窗口时体现,

会尽量满足最佳分列宽度。

column-rule-stylesolid|dashed等指定文本分列中间线的样式,跟边框一样。
column-rule-widthpx|%指定文本中间线的宽度
column-rule-color各种颜色规定文本中间线的颜色
column-gappx值规定文本之间的间隔
column-span数值规定元素应该跨越几列,该元素只对块元素有效
column-rule

顺序

width style color

间隔线的简写属性
columns分列中width和count的简写属性

代码示例

<style>
.textcolumn{
 column-count: 3;
 column-rule-style: dotted;
 column-rule-width: 3px;
 column-width: 100px;
}
.textcolumn span{
 display: block; /* 设置为块元素,让跨列起效 */
 column-span: all;
 font-size: 40px;
 text-align: center; /* 文本居中 */
}
</style>
-----------------------------
<span>铃芽之旅</span>
	具体的文本内容这里简写了
	</div>

  • 用户界面属性
  1. 一共两个属性: resize(是否允许用户调整元素的宽和高) 和 outline-offset(规定轮廓和边框之间的空间大小)
  2. 他们的值分别有: horizontal vertical  both none和 px值 
  3. 这些属性让元素能够向textarea那样自由被用户调整,也可以禁用textarea的自动调整。
  4. 例子,在上面例子中的div中国呢加入这两个属性
<style>
.textcolumn{
 resize: both;
 overflow: auto;/*resize属性要配合这个属性使用,不然文本多时失效*/
 outline: 4px solid red;
 outline-offset: 40px;
}
</style>

五、css中变量的定义和调

  • 定义变量需要两步,首先用选择器选择变量可以调用的范围,如:root{} 就是在整个元素中都可以调用
  • 调用使用var(自己定义的值的名字,备选值当找不到变量时使用);
  • 为什么要使用变量直接指定不是更方便吗?
  1. 方便变量的调整,只需要修改一个地方就可以。
  2. 方便局部变量修改,例如当你想要改变局部运用的全局变量中的颜色值mycolor时,只需要在该局部的选择器用相同的属性名覆盖即可,范围越精确优先级越高。
  • 例子,图方便还是用之前的div
<style>
:root {
  --mycolor: #ddd;  /* 自己定义的变量值,适用整个文档 */
}
.textcolumn{
 background-color: var(--mycolor,green); /* 自定义变量的调用 */
</sytle>

灰色背景添加成功 

  • 该变量也可以利用js获取,并更改,下面演示实例。 
<style>
#changecontainer{
text-align: center;
}
.changecolor,.seecolor{
   display: inline-block;
   background-color: yellow;
   font-size: 30px;
}
</style>
<script>
//获取选择器
var rootel = document.querySelector(":root");
//获取文档样式
var styleme = getComputedStyle(rootel);

//定义函数查看
function seecolor(){
	//获取自定义的属性值
	var valueme = styleme.getPropertyValue("--mycolor");
	alert("现在的变量--mycolor变量值是" + valueme);	
}
function changecolor(){
	rootel.style.setProperty("--mycolor","green");
	
}
</script>
--------------------------------
<div id="changecontainer">
	<button class="changecolor" onclick="changecolor()">改变背景色为绿色</button> <button class="seecolor" onclick="seecolor()">查看背景色</button>
	</div>

实现效果通过两按钮,改变--mycolor的值,反应在本例就是背景色变了,还可以查看--mycolor的值

改变前查看

改变后查看

六、box-sizing属性和flex属性值

(一)box-sizing属性

  • 该属性规定width属性包含的范围,默认是width设置的是内容区的宽度,当设置为border-box值时,只要规定了width属性,他就包括边框,内容区和内边框,这时候再规定内边距,就会在width的基础上减去其他部分以满足总宽度不变。
  • 有三个值content-box(默认的,仅内容区)border-box(包括内容区,内边距,边框),inherit(继承父类该属性的值)

(二)display: flex

  • flex容器中的直接子元素都会变成弹性容器,即是可以随着视口变化而变化,flex属性的出现可以替代用定位和浮动进行的页面布局。
  • 当将元素设置成flex值时,则该元素就时flex元素了,具有了一些特别的css属性。具体见下表。
flex-direction

row

column

row-reverse

column-reverse

规定flex容器中项目的排列方向:横向排列,纵向排列,纵向排列但从下往上,横向排列但从右往左。
flex-wrap

nowrap

wrap

wrap-reverse

规定flex容器中的项目是否在必要时换行,即窗口缩小时。

不换行,换行,换行但是顺序颠倒

flex-flowdirction   wrap上面两个属性的简写属性,顺序如左。
justify-content

flex-start

flex-end

center

space-around

space-between

stretch

baseline

规定flex容器中的元素应该如何对齐

与容器开始的地方对齐(默认)

与容器结束的地方对齐

居中对齐

居中对齐,但是每个项目周围有间隔

居中对齐,但是每个项目水平之间有间隔

拉伸容器以填充容器

让项目以基线对齐

align-content

flex-start

flex-end

center

space-around

space-between

stretch

baseline

跟上面没啥不同,感觉(😭)
align-items

flex-start

flex-end

center

space-around

space-between

stretch

baseline

只知道居中跟justify-content不同:一个是水平居中,一个是纵向居中,两者结合可以实现完美居中。
  • 用在flex容器中项目上的属性有
order数字

规定该项目在整个项目中的位置,

如order: 1 则该元素是第一项目。

flex-grow数字

规定该项目增长的速度是其他项目的几倍

为什么叫增长速度,直观上其实还是大小,但是因为项目是弹性项目,所以倍数越大,对窗口缩放的敏感性就越大。

flex-shrink数字规定该项目,相对于其他项目,收缩多少倍,为0时,不会随着视口缩小而收缩,大于1,会收缩比其他项目小,1跟其他项目收缩一直。
flex-basis

px

规定项目的初始长度。
flex上面属性的简写属性,顺序: grow shrink basis

align-self

指定该项目自己的对齐方式,将会覆盖容器中定义的align-items中定义的对齐方式,值跟容器中的对齐一致

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值