首页 > 其他分享 >CSS——边框过渡效果

CSS——边框过渡效果

时间:2024-09-26 20:21:09浏览次数:9  
标签:center clip button 边框 inset 过渡 path height CSS

CSS——边框过渡效果

今天浅浅的水一下边框过渡效果。

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="6VcXgahh-1727106152223" src="https://live.csdn.net/v/embed/426209"></iframe>

按钮边框过渡效果

小小的解释一波

这里采用了一个外围的容器盒子,为了实现容器盒子的水平居中(这个简单)和垂直居中(这个就稍微复杂一些,往后可能会出一期专门设置垂直居中的文章),我还是请出了 Flex弹性盒子 ,真的是太好用了。
这里将body设置为弹性容器,然后再通过弹性容器 justify-contentalign-items 分别实现水平和垂直居中。不是很了解的同学可以查看 CSS——弹性盒子布局(display: flex),里面内容很详细。

display: flex;
justify-content: center;
align-items: center;

这时候发现,容器里面的按钮是如何对齐的呢?这里我想让弹性盒子歇一歇。然后我就投机取巧地设置父盒子是按钮的三倍大小(宽高都是等比例的),这样的话,我只需要将按钮水平、竖直地移动自身长度地100%,就可以实现水平和垂直的居中了。(虽然可行,但是不推荐)

 .container {
   width: 360px;
   height: 216px;
   text-align: center;

 }

 .button {
   position: relative;
   width: 120px;
   height: 72px;
   translate: 100% 100%;
   line-height: 72px;
 }

关键的动画效果是如何制作的呢?
这里我首先创建了按钮地两个伪元素,然后对伪元素进行操作,这里采用了clip-path属性,其具体使用可以参考MDN(inset()函数),这里我使用inset()裁剪出了矩形区域,其中的值是确保初始时候每条边上的线长都为30px。

.button::before {
  clip-path: inset(0 90px 42px 0);
}

.button::after {
  clip-path: inset(42px 0 0 90px);
}

然后使用伪类在鼠标悬停时做出改变

.button:hover::before {
  clip-path: inset(0 0 0 0)
}

.button:hover::after {
  clip-path: inset(0 0 0 0)
}

为了实现平滑过渡,我们为伪元素添加了动画延时效果

transition: 1s ease;

源代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>边框过渡</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }

    a {
      text-decoration: none;
      color: #fff;
      font-size: 1.5rem;
    }

    body {
      width: 100vw;
      height: 100vh;
      background-image: radial-gradient(circle at center, rgba(10, 10, 10, 0.5), #000);
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .container {
      width: 360px;
      height: 216px;
      text-align: center;

    }

    .button {
      position: relative;
      width: 120px;
      height: 72px;
      translate: 100% 100%;
      line-height: 72px;
    }

    .button::before,
    .button::after {
      box-sizing: border-box;
      content: '';
      width: 120px;
      height: 72px;
      border: 1px solid #fff;
      position: absolute;
      top: 0px;
      left: 0px;
      transition: 1s ease;
    }

    .button::before {
      clip-path: inset(0 90px 42px 0);
    }

    .button::after {
      clip-path: inset(42px 0 0 90px);
    }

    .button:hover::before {
      clip-path: inset(0 0 0 0)
    }

    .button:hover::after {
      clip-path: inset(0 0 0 0)
    }
  </style>
</head>

<body>
  <main class="container">
    <div class="button"><a href="javascript:;">按钮</a></div>
  </main>
</body>

</html>

标签:center,clip,button,边框,inset,过渡,path,height,CSS
From: https://blog.csdn.net/m0_73777400/article/details/142470864

相关文章

  • 数据飞轮的崛起:企业如何从数据中台过渡到数据驱动的更高境界
    数据飞轮的崛起:企业如何从数据中台过渡到数据驱动的更高境界在数字化转型的浪潮中,数据中台曾被视为企业走向数据驱动决策的关键布局。然而,随着时间的推进,数据中台的局限性逐渐显现,那些初衷为积累和统一数据资源的中台项目往往止步于数据集成和存储,缺乏后续的深度应用与创新活力。在......
  • css-functions伪类选择器系列二
    一张图浏览CSSFunctions概述本文主要讲述CSS的部分伪类选择器第二篇,包括::nth-child、:nth-last-child、:nth-of-type和:nth-last-of-type。:nth-child():nth-child伪类是根据父元素的子元素列表中的索引来选择元素。语法:nth-child是以一个参数nth来描述匹配兄弟元素......
  • CSSE2310 Command Line Arguments
    CSSE2310–Semester2,2024Assignment3IntroductionThegoalofthisassignmentistodemonstrateyourskillsandabilityinfundamentalprocessmanagementandcommunicationconcepts(pipesandsignals),andtofurtherdevelopyourCprogrammingskills......
  • scss概念
    SCSS(SassyCSS)是CSS的一种预处理器语言,它在CSS的基础上提供了更多的功能和灵活性,使得样式表的编写和管理更加高效和便捷。以下是SCSS的一些优势:变量(Variables):SCSS允许使用变量来存储颜色、字体大小等数值,使得在整个样式表中统一调整这些值变得更加方便和可维护。嵌套(NestedRules):可......
  • HTML与CSS二三事
    概述HTML是英文HyperTextMark-upLanguage(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记)。相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器根据标记语言的规则去解释它。浏览器负责将标签翻译成用户“看得懂”的格式,呈现给用户!如下图:HTML页面主体格式如......
  • CSS常用样式及示例
    CSS常用样式及示例 一、简介   层叠样式表(英文全称:CascadingStyleSheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式......
  • 第六章 元素应用CSS
    1.使用CSS设置字体样式在CSS中设置字体样式可以通过多种属性来实现。以下是一些常用的字体样式属性及其用法: 基本字体样式cssbody{    font-family:'Arial',sansserif;/字体类型/    font-size:16px;/字体大小/    font-weight:normal;/......
  • CSS基础
    CSS简介CSS概念CSS(CascadingStyleSheets)层叠样式表,又叫级联样式表,简称样式表CSS文件后缀名为.cssCSS用于HTML文档中元素样式的定义为什么需要CSS使用css的目的就是让网页具有美观一致的页面CSS和HTML之间的关系HTML用于构建网页的结构CSS用于构建HTML元素的样式H......
  • CSS选择器
    选择器由HTML元素的id、class属性或元素名本身以及一些特殊符号构成,用来指定要为哪个HTML元素定义样式。选择器是CSS样式规则中重要的组成部分,我们可以将选择器看作是CSS样式与HTML元素之间的匹配模式,与选择器关联的样式规则会应用于选择器所指定的HTML元素上......
  • HTML引用CSS
    CSS样式需要引用到HTML中才能真正有效,那么如何才能在HTML中引用CSS呢?下面就来介绍一下。1.内嵌样式表您可以在HTML头部(<head>标签内)的<style>标签中定义CSS样式,使用内嵌样式表定义的CSS样式只能在当前网页内使用,示例代码如下:<!DOCTYPEhtml><html>......