멋진 CSS 테두리 애니메이션을 감상해보세요!
이 기사에서는 CSS를 사용하여 구현된 몇 가지 멋진 테두리 애니메이션을 공유합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
【추천 튜토리얼: CSS 비디오 튜토리얼】
오늘 이러한 인터페이스를 보는 것은 매우 흥미로웠습니다:
스타일이 매우 독특하다고 생각합니다. 특히 일부 테두리가 그렇습니다.
안녕하세요, CSS를 사용하여 테두리에서 어떤 트릭을 수행할 수 있는지 알아보기 위해 특별한 테두리 기사를 작성해 보겠습니다.
border 속성
테두리라고 하면 가장 먼저 떠오르는 것은 테두리
입니다. 가장 일반적으로 사용되는 것은 solid
와 dashed
입니다. code>, 위 그림과 같이 점선
이 나타납니다. border
,我们最常用的莫过于 solid
,dashed
,上图中便出现了 dashed
。
除了最常见的 solid
,dashed
,CSS border 还支持 none
,hidden
, dotted
, double
, groove
, ridge
, inset
, outset
等样式。除去 none
,hidden
,看看所有原生支持的 border 的样式:
基础的就这些,如果希望实现一个其他样式的边框,或者给边框加上动画,那就需要配合一些其他属性,或是脑洞大开。OK,一起来看看一些额外的有意思的边框。
边框长度变化
先来个比较简单的,实现一个类似这样的边框效果:
这里其实是借用了元素的两个伪元素。两个伪元素分别只设置上、左边框,下、右边框,通过 hover
时改变两个伪元素的高宽即可。非常好理解。
div {position: relative;border: 1px solid #03A9F3;&::before,&::after {content: "";position: absolute;width: 20px;height: 20px;}&::before {top: -5px;left: -5px;border-top: 1px solid var(--borderColor);border-left: 1px solid var(--borderColor);}&::after {right: -5px;bottom: -5px;border-bottom: 1px solid var(--borderColor);border-right: 1px solid var(--borderColor);}&:hover::before,&:hover::after {width: calc(100% + 9px);height: calc(100% + 9px);}}复制代码
CodePen Demo -- width border animation
接下来,会开始加深一些难度。
虚线边框动画
使用 dashed
关键字,可以方便的创建虚线边框。
div {border: 1px dashed #333;}复制代码
当然,我们的目的是让边框能够动起来。使用 dashed
关键字是没有办法的。但是实现虚线的方式在 CSS 中有很多种,譬如渐变就是一种很好的方式:
div {background: linear-gradient(90deg, #333 50%, transparent 0) repeat-x;background-size: 4px 1px;background-position: 0 0;}复制代码
看看,使用渐变模拟的虚线如下:
好,渐变支持多重渐变,我们把容器的 4 个边都用渐变表示即可:
div {background:linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(0deg, #333 50%, transparent 0) repeat-y,linear-gradient(0deg, #333 50%, transparent 0) repeat-y;background-size: 4px 1px, 4px 1px, 1px 4px, 1px 4px;background-position: 0 0, 0 100%, 0 0, 100% 0;}复制代码
效果如下:
OK,至此,我们的虚线边框动画其实算是完成了一大半了。虽然 border-style: dashed
不支持动画,但是渐变支持呀。我们给上述 div 再加上一个 hover
效果,hover
的时候新增一个 animation
动画,改变元素的 background-position
即可。
div:hover {animation: linearGradientMove .3s infinite linear;}@keyframes linearGradientMove {100% {background-position: 4px 0, -4px 100%, 0 -4px, 100% 4px;}}复制代码
OK,看看效果,hover 上去的时候,边框就能动起来,因为整个动画是首尾相连的,无限循环的动画看起来就像是虚线边框在一直运动,这算是一个小小的障眼法或者小技巧:
这里还有另外一个小技巧,如果我们希望虚线边框动画是从其他边框,过渡到虚线边框,再行进动画。完全由渐变来模拟也是可以的,如果想节省一些代码,使用 border
solid
, dashed
외에도 CSS 테두리는 none
, hidden
, 도 지원합니다. >점선
, 더블
, 홈
, 능선
, 삽입
, 아웃셋
등 스타일. none
, hidden
을 제거하고 기본적으로 지원되는 모든 테두리 스타일을 살펴보세요.

기본은 여기까지입니다. 다른 스타일의 테두리를 구현하고 싶거나 테두리에 애니메이션을 추가하고 싶다면, 그런 다음 다른 속성을 일치시키거나 상상력을 사용해야 합니다. 좋습니다. 몇 가지 흥미로운 테두리를 더 살펴보겠습니다.

hover
를 전달하면 두 의사 요소의 높이와 너비가 변경될 수 있습니다. 이해하기 매우 쉽습니다. 🎜div {border: 1px solid #333;&:hover {border: none;background:linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(90deg, #333 50%, transparent 0) repeat-x,linear-gradient(0deg, #333 50%, transparent 0) repeat-y,linear-gradient(0deg, #333 50%, transparent 0) repeat-y;background-size: 4px 1px, 4px 1px, 1px 4px, 1px 4px;background-position: 0 0, 0 100%, 0 0, 100% 0;}}复制代码
점선
키워드를 사용하면 점선 테두리를 쉽게 만들 수 있습니다. 🎜div {outline: 1px solid #333;outline-offset: -1px;&:hover {outline: none;}}复制代码

점선
키워드를 사용하여 이 작업을 수행할 수 있는 방법은 없습니다. 하지만 CSS에서 점선을 구현하는 방법은 여러 가지가 있습니다. 예를 들어 그라데이션이 좋은 방법입니다. 🎜div {position: relative;&::after {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background-repeat: no-repeat;background-size: 50% 50%, 50% 50%;background-position: 0 0, 100% 0, 100% 100%, 0 100%;background-image: linear-gradient(#399953, #399953), linear-gradient(#fbb300, #fbb300), linear-gradient(#d53e33, #d53e33), linear-gradient(#377af5, #377af5);}}复制代码

div {animation: rotate 4s linear infinite;}@keyframes rotate { 100% {transform: rotate(1turn); }}复制代码

border-style: dashed
는 애니메이션을 지원하지 않지만 그라데이션은 지원합니다. 위 div에 hover
효과를 추가합니다. hover
시 요소의 배경 위치를 변경하는 <code>animation
애니메이션을 추가합니다. . 그게 다입니다. 🎜div::after {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background-color: #fff;background-repeat: no-repeat;background-size: 50% 50%;background-position: 0 0;background-image: linear-gradient(#399953, #399953);}复制代码

border
를 사용하는 것이 더 빠릅니다. 예: 🎜.conic {position: relative; &::before {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background: conic-gradient(transparent, rgba(168, 239, 255, 1), transparent 30%);animation: rotate 4s linear infinite; }}@keyframes rotate { 100% {transform: rotate(1turn); }}复制代码
要想解决这个问题,我们可以把 border
替换成 outline
,因为 outline
可以设置 outline-offset
。便能完美解决这个问题:
div {outline: 1px solid #333;outline-offset: -1px;&:hover {outline: none;}}复制代码
最后看看运用到实际按钮上的效果:
上述 Demo 完整代码如下:
CodePen Demo -- dashed border animation
其实由于背景和边框的特殊关系,使用 border 的时候,通过修改
background-position
也是可以解决的,就是比较绕。关于背景和边框的填充关系,可以看这篇文章:条纹边框的多种实现方式
渐变的其他妙用
利用渐变,不仅仅只是能完成上述的效果。
我们继续深挖渐变,利用渐变实现这样一个背景:
div {position: relative;&::after {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background-repeat: no-repeat;background-size: 50% 50%, 50% 50%;background-position: 0 0, 100% 0, 100% 100%, 0 100%;background-image: linear-gradient(#399953, #399953), linear-gradient(#fbb300, #fbb300), linear-gradient(#d53e33, #d53e33), linear-gradient(#377af5, #377af5);}}复制代码
注意,这里运用了元素的伪元素生成的这个图形,并且,宽高都是父元素的 200%
,超出则 overflow: hidden
。
接下来,给它加上旋转:
div {animation: rotate 4s linear infinite;}@keyframes rotate { 100% {transform: rotate(1turn); }}复制代码
看看效果:
最后,再利用一个伪元素,将中间遮罩起来,一个 Nice 的边框动画就出来了 (动画会出现半透明元素,方便示意看懂原理):
上述 Demo 完整代码如下,这个效果我最早见于这位作者 -- Jesse B
CodePen Demo -- gradient border animation
改变渐变的颜色
掌握了上述的基本技巧之后,我们可以再对渐变的颜色做一些调整,我们将 4 种颜色变成 1 种颜色:
div::after {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background-color: #fff;background-repeat: no-repeat;background-size: 50% 50%;background-position: 0 0;background-image: linear-gradient(#399953, #399953);}复制代码
得到这样一个图形:
同样的,让它旋转一起,一个单色追逐的边框动画就出来了:
CodePen Demo -- gradient border animation 2
Wow,很不错的样子。不过如果是单线条,有个很明显的缺陷,就是边框的末尾是一个小三角而不是垂直的,可能有些场景不适用或者 PM 接受不了。
那有没有什么办法能够消除掉这些小三角呢?有的,在下文中我们再介绍一种方法,利用 clip-path
,消除掉这些小三角。
conic-gradient
的妙用
再介绍 clip-path
之前,先讲讲角向渐变。
上述主要用到了的是线性渐变 linear-gradient
。我们使用角向渐变 conic-gradient
其实完全也可以实现一模一样的效果。
我们试着使用 conic-gradient
也实现一次,这次换一种暗黑风格。核心代码如下:
.conic {position: relative; &::before {content: '';position: absolute;left: -50%;top: -50%;width: 200%;height: 200%;background: conic-gradient(transparent, rgba(168, 239, 255, 1), transparent 30%);animation: rotate 4s linear infinite; }}@keyframes rotate { 100% {transform: rotate(1turn); }}复制代码
效果图和示意图如下,旋转一个部分角向渐变的图形,中间的部分使用另外一个伪元素进行遮罩,只漏出线条部分即可:
CodePen Demo -- Rotating border 3
clip-path
的妙用
又是老朋友 clip-path
,有意思的事情它总不会缺席。
clip-path
本身是可以进行坐标点的动画的,从一个裁剪形状变换到另外一个裁剪形状。
利用这个特点,我们可以巧妙的实现这样一种 border 跟随效果。伪代码如下:
div {position: relative;&::before {content: "";position: absolute;top: 0;left: 0;right: 0;bottom: 0;border: 2px solid gold;animation: clippath 3s infinite linear;}}@keyframes clippath {0%,100% {clip-path: inset(0 0 95% 0);}25% {clip-path: inset(0 95% 0 0);}50% {clip-path: inset(95% 0 0 0);}75% {clip-path: inset(0 0 0 95%);}}复制代码
效果图与示意图一起:
CodePen - clip-path border animation
这里,因为会裁剪元素,借用伪元素作为背景进行裁剪并动画即可,使用 clip-path
的优点了,切割出来的边框不会产生小三角。同时,这种方法,也是支持圆角 border-radius
的。
如果我们把另外一个伪元素也用上,实际实现一个按钮样式,可以得到这样的效果:
CodePen - clip-path border animation 2
overflow
的妙用
下面这个技巧利用 overflow 实现。实现这样一个边框动画:
为何说是利用 overflow
实现?
贴个示意图:
CodePen Demo -- 巧用overflow及transform实现线条hover效果
两个核心点:
- 我们利用
overflow: hidden
,把原本在容器外的一整个元素隐藏了起来 - 利用了
transform-origin
,控制了元素的旋转中心
发现没,其实几乎大部分的有意思的 CSS 效果,都是运用了类似技巧:
简单的说就是,我们看到的动画只是原本现象的一小部分,通过特定的裁剪、透明度的变化、遮罩等,让我们最后只看到了原本现象的一部分。
border-image
的妙用
利用 border-image
,我们也可以实现一些有意思的边框动画。关于 border-image
,有一篇非常好的讲解文章 -- border-image 的正确用法,本文不对基本定义做过多的讲解。
如果我们有这样一张图:
便可以利用 border-image-slice
及 border-image-repeat
的特性,得到类似的边框图案:
div {width: 200px;height: 120px;border: 24px solid;border-image: url(image-url);border-image-slice: 32;border-image-repeat: round;}复制代码
在这个基础上,可以随便改变元素的高宽,如此便能扩展到任意大小的容器边框中:
CodePen Demo -- border-image Demo
接着,在这篇文章 -- How to Animate a SVG with border-image 中,还讲解了一种利用 border-image
的边框动画,非常的酷炫。
与上面例子不一样的是,我们只需要让我们的图案,动起来,就是我们需要这样一个背景图(掘金不支持 SVG 动图,原图地址):
那么,我们也就能得到运动的边框图,代码完全一样,但是,边框是运动的:
CodePen Demo -- Dancing Skull Border
border-image
使用渐变
border-image
除了贴图引用 url
之外,也是可以直接填充颜色或者是渐变的。
之前也有一篇关于 border-image
的文章 -- 巧妙实现带圆角的渐变边框
我们可以利用 border-image
+ filter
+ clip-path
实现渐变变换的圆角边框:
.border-image-clip-path {width: 200px;height: 100px;border: 10px solid;border-image: linear-gradient(45deg, gold, deeppink) 1;clip-path: inset(0px round 10px);animation: huerotate 6s infinite linear;filter: hue-rotate(360deg);}@keyframes huerotate {0% {filter: hue-rotate(0deg);}100% {filter: hue-rotate(360deg);}}复制代码
CodePen Demo -- clip-path、border-image 加 filter 实现圆角渐变边框
更多编程相关知识,请访问:编程视频!!
위 내용은 멋진 CSS 테두리 애니메이션을 감상해보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.
