从零开始学web之css3边框图片,过渡

道廷の博客      2022-02-14     238

关键词:

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新......

在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

一、边框图片

边框图片:就是给边框加图片背景

我们之前加的边框都是纯颜色的边框,那么我们怎么给边框加图片呢?

原理:把一张图片分成九宫格的形式,然后一一对应到需要添加边框的元素上。

并且,添加边框图片是以背景的方式添加的,所以会有可能文字覆盖在边框的情况,后面也会介绍处理方法。

语法:

/* border-image-source:可以指定边框图片的路径,默认只是填充到容器的四个角点 */
border-image-source: url("../images/border1.png");

/* border-image-slice:设置四个方向上的裁切距离, fill:做内容的内部填充 */
border-image-slice: 27 fill;
/* 如果四个边框的宽度不同,可以设置4个值*/
border-image-slice: 27 10; /*左右27 上下10*/
border-image-slice: 27 20 15 5 fill; /*左27 下20 右15 上5*/

/*border-image-width:边框图片的宽度。如果没有设置这个属性,那么宽度默认就是元素的原始的边框宽度。
细节:
1.边框图片的本质是背景,并不会影响元素内容的放置  
2.内容只会被容器的border和padding影响
建议:一般将值设置为原始的边框的宽度*/
border-image-width: 27px;

/*border-image-outset:扩展边框:将边框扩大,但是会影响元素的大小,box-sizing也不可挽回,建议不使用。*/
border-image-outset: 0px;

/*border-image-repeat:
repeat:直接重复平铺,可能有不完整的图像
round:将内容缩放进行完整的重复平铺
stretch:将内容拉伸(此为默认值)*/
border-image-repeat: round;

以上的内容可以连写(注意有的属性需要用 / 分隔):

/*border-image: source slice / width / outset repeat;*/
border-image: url("../images/border1.png") 27 fill / 27px / 0px round;

案例:QQ气泡

我们在发QQ消息的时候,可以选择很多不同的气泡样式,而且当我们发消息的时候,不管文字的多少,气泡边框的样式不变,而只是中间内容的填充。如果只是简单的气泡拉伸的话,边角就会变得丑陋,所以就需要用到边框图片的技术。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div{
            width: 100px;
            height: auto;
            margin:10px auto;
            border: 20px solid red;
            border-image: url("./images/timg.jpg");
            border-image-slice: 20 fill;
            border-image-width: 20px;
            border-image-outset: 0px;
            border-image-repeat: stretch;
        }
    </style>
</head>
<body>
    <div>你好,在么?</div>
    <div>在的</div>
</body>
</html>

二、过渡

通过过渡 transition,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。

要实现这一点,必须规定两项内容:

  • 1.规定希望把效果添加到哪个 CSS 属性上;

  • 2.规定效果的时长。

1、基本语法

/*1.transition-property:添加过渡效果的样式属性名称*/
transition-property: left;

/*2.transition-duration:过渡效果的耗时 以秒做为单位*/
transition-duration: 2s;

/*3.transition-timing-function:设置时间函数--控制运动的速度*/
transition-timing-function: linear;
/*
参数说明:
steps(n):n代表次数,就是动画分几次走完。(比如秒针的走动)
linear:规定以相同速度开始至结束的过渡效果。
ease:规定慢速开始,然后变快,然后慢速结束的过渡效果。
ease-in:规定以慢速开始的过渡效果。
ease-out:规定以慢速结束的过渡效果。
ease-in-out:规定以慢速开始和结束的过渡效果。
*/

/*4.transition-delay:过渡效果的延迟,间隔多少时间后才开始动画。*/
transition-delay: 2s;

注意:添加过渡效果:过渡效果执行完毕之后,默认会还原到原始状态。

2、连写样式

transition: property duration timing-function delay;

参数说明:

property:属性名称

duration:过渡时间

timing-function:时间函数

delay:延迟时间

为多个样式同时添加过渡效果:(之间用逗号隔开)

transition: left 2s linear 0s,
			background-color 5s linear 0s;

为所有样式添加过渡效果:all:所有样式

transition:all 2s steps(4);

缺点:

  1. 所有样式的过渡效果一样。
  2. 效率低下,它会去查询所有添加的样式。
  3. 建议不要这么写。

3、使用建议

因为 transition 最早是有由 webkit 内核浏览器提出来的,mozilla 和 opera 都是最近版本才支持这个属性,而我们的大众型浏览器 IE 全家都是不支持,另外由于各大现代浏览器 Firefox,Safari,Chrome,Opera 都还不支持 W3C的标准写法,所以在应用 transition 时我们有必要加上各自的前缀,最好在最后写上我们 W3C 的标准写法,这样支持标准写法的浏览器会覆盖前面的写法,只要浏览器支持我们的 transition 属性,那么这种效果就会自动加上去,如:

-moz-transition: all 1s ease;
-webkit-transition: all 1s ease;
-o-transition: all 1s ease;
transition: all 1s ease; /*放在最后*/

4、案例:手风琴效果

效果:鼠标放在每个标签上,会慢慢下拉出详细内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .menu {
            width: 200px;
            height: auto;
            margin: 100px auto;
        }
        .item {
            width: 100%;
            height: auto;
        }
        .item > h3 {
            height: 40px;
            line-height: 40px;
            background-color: rgb(146, 210, 226);
            padding: 5px 0 5px 10px;
            border-bottom: 2px solid #ccc;
        }
        .item > .itemBox {
            width: 100%;
            height: 0;
            background-color: rgb(248, 187, 233);
            overflow: hidden;
        }
        .itemBox > ul {
            list-style: none;
            padding: 10px 10px;
        }
        .item:hover > .itemBox {
            height: 110px;
            transition: height 0.5s;
        }
    </style>
</head>
<body>
    <div class="menu">
        <div class="item">
            <h3>市内新闻</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                </ul>
            </div>
        </div>
        <div class="item">
            <h3>省内新闻</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                </ul>
            </div>
        </div>
        <div class="item">
            <h3>国内新闻</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                </ul>
            </div>
        </div>
        <div class="item">
            <h3>国际新闻</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                    <li>深圳超市肉菜档遭抢</li>
                </ul>
            </div>
        </div>
    </div>
</body>
</html>

从零开始学web之css3css3概述,选择器

大家好,这里是「从零开始学Web系列教程」,并在下列地址同步更新......github:https://github.com/Daotin/Web微信公众号:Web前端之巅博客园:http://www.cnblogs.com/lvonve/CSDN:https://blog.csdn.net/lvonve/在这里我会从Web前端零基础开始,一步步... 查看详情

从零开始学web之csscss初始化定位overflow标签规范

大家好,这里是「Daotin的梦呓」从零开始学Web系列教程。此文首发于「Daotin的梦呓」公众号,欢迎大家订阅关注。在这里我会从Web前端零基础开始,一步步学习Web相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起... 查看详情

从零开始学web之html标签超链接特殊符号列表音乐滚动head等

大家好,这里是Daotin从零开始学Web系列教程。此文首发于「Daotin的梦呓」,欢迎大家订阅关注。在这里我会从Web前端零基础开始,一步步学习Web相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入Web前端学习的... 查看详情

从零开始学web之jquery为元素绑定多个相同事件,解绑事件(代码片段)

大家好,这里是「从零开始学Web系列教程」,并在下列地址同步更新......github:https://github.com/Daotin/Web微信公众号:Web前端之巅博客园:http://www.cnblogs.com/lvonve/CSDN:https://blog.csdn.net/lvonve/在这里我会从Web前端零基础开始,一步步... 查看详情

从零开始学web之html5表单,多媒体新增内容,新增获取操作元素,自定义属性

大家好,这里是「从零开始学Web系列教程」,并在下列地址同步更新......github:https://github.com/Daotin/Web微信公众号:Web前端之巅博客园:http://www.cnblogs.com/lvonve/CSDN:https://blog.csdn.net/lvonve/在这里我会从Web前端零基础开始,一步步... 查看详情

从零开始学习前端开发—15css3变形基础过渡动画

一、css3过渡语法:transition:过渡属性过渡时间延迟时间过渡方式;1.过渡属性(transition-property)取值:all所有发生变化的css属性都添加过渡  eg:transition:all1s;  ident指定要过渡的css属性列表  eg:transition:border-radius1s,background2s; ... 查看详情

从零开始学opendaylight之基础环境

Justdoit! CodeisKing!一、基础环境 0.VMware-workstation+ Ubuntu-16.04;      1.JDK配置:   下载链接: http://www.oracle.com/technetwork/java/javase/dow 查看详情

从零开始学多线程之构建快(代码片段)

前文回顾上一篇博客从零开始学多线程之组合对象(三)主要讲解了:1.设计线程安全的类要考虑的因素.2. 对于非线程安全的对象,我们可以考虑使用锁+实例限制(Java监视器模式)的方式,安全的访问它们.3.扩展线程安全类的四种方... 查看详情

从零开始学opendaylight之使用archetype构建项目

本文源自https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Startup_Project_ArchetypePart1一、环境信息:   Windows10+maven3.3.9+JDK1.8,详细信息如下:   <properties>< 查看详情

web前端基础教学技术讲解之css3动画学习

关于动画.我们学习分为三大点:  ?一.过渡动画.即2d变换所谓过渡动画,就是从初始状态过渡到结束状态这个过程中所产生的动画。?过渡(transition)本身需要定义参数.否则,看不到效果.我们学到的可定义的参数有以下几点:?tr... 查看详情

睡前一小时数学系列之从零开始的快速乘法。

睡前一小时数学系列之从零开始的快速乘法。当我们遇到大数相乘的时候情不自禁可以想到高精度。但是如果遇到形如a*b%c的运算的时候。数也就是longlong级别(2^61-1)但是没有办法的是这样数如果相乘会超longlong级,再一模,hhhh肯... 查看详情

从零开始学yc-framework之初步

本文主要内容为如下几个方面?YC-Framework的取名出于什么考虑?YC-Framework的特点有哪些?YC-Framework的模块由哪些组成?为什么要开发YC-Framework?YC-Framework致力于解决怎样的问题?YC-Framework适用于哪些群体?YC-Fr 查看详情

从零开始学spring源码之xml解析:默认标签解析

  上一篇说到spring的默认标签和自定义标签,发现这里面东西还蛮多的。决定还是拆开来写。今天就来好好聊聊这两块是怎么玩的,首先我们先看看默认标签:privatevoidparseDefaultElement(Elementele,BeanDefinitionParserDelegatedelegate){/... 查看详情

从零开始学go之基本:包函数声明与格式化输出(代码片段)

...声明当前包其中包含main函数的包必须为main包来声明入口从零开始学Go之基本(二):包、函数声明与格式化输出 导入包:import包名称//import"fmt"单个导入import("fmt""math")引用其他包时必须通过import来获取,根据包中的变量或者函... 查看详情

从零开始学习前端开发—17css3背景与渐变

一、css3背景切割:background-clip:border-box|padding-box|content-box;作用:用来设置背景的可见区域a)border-box默认值,背景在边框及边框以内的区域可见b)padding-box背景在padding及padding以内的区域可见c)content-box背景在content区域可见 二、... 查看详情

从零开始实现图片加载特效之渐变加载圆角图片

...53161853,本文出自:【gengqiquan的博客】之前有写了一个从零开始实现一个网络图片加载框架,实现了基本的加载网络和图片功能这篇博客来教大家怎么给图片加载加上特效,本次讲解是基于从零开始 查看详情

从零开始学python之数据库的交互

参考技术A这篇文章主要介绍了Python与数据库的交互,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下安装模块pipinstallpymongo添加--->insert_one|insert_many查找--->find|find_one注意要... 查看详情

从零开始学sql:where条件查询与连接(代码片段)

文章目录1.练习强化2.where之比较运算3.where之逻辑运算4.where之模糊查询5.where之范围查询6.where之空值判断7.order排序8.聚合函数9.group分组10.limit限制记录11.连接13.自连接13.子查询14.分页1.练习强化查询查询所有字段:select*from表... 查看详情