纯CSS3文章边角悬停气泡化填充动效

2023-09-14 17:15:10 浏览数 (1)

示例代码

代码语言:javascript复制
<template>
   <div>
         <div class="wrapper">
            <div class="desc">
               <h1>气泡角效应</h1>
               <p>纯CSS气泡角效果,用于在悬停时显示短消息.</p>
            </div>
            <div class="box">
               <div class="bubble-aprox"></div>
               <div class="bubble">
                     <span class="bubble__icon">i</span>
                     <div class="bubble__content">
                       一个靠前排的 90 后,具有情怀的技匠,路上正追逐斜杠青年的践行者
                     </div>
               </div>
               <div class="box__content">
                     <p>这是一个我个人的后花园,我的网站,我做主。

虽说,哪里有流量,哪里就有市场,但无论是在哪个第三方平台上,在国内,并非完全言论自由。

一定程度上,会受到管制约束,况且哪一天,你也无法保证,一些第三方平台就挂了的,随之,你的记录也会消失,数据只有掌握在自己手上,心里才无比的踏实。

如果说阅读是知识的输入,那么写作就是知识理解的输出,同时也是一个炼化知识的过程。

它是能够增强锻炼自己的表达能力的,即使口头表达跟不上,但是思考却要快于表达,有的人擅长思考,有的人善于表达,同时二者都兼具的人

不说是牛人,但至少是一个很厉害的人。
</p>
               </div>
            </div>
        </div>
   </div>
</template>
<style>
.wrapper {
    width: 40em;
    margin: 4em auto;
    background: #fff;
    padding: 4em;
    border-radius: 8px;
    border: 1px solid #f5f5f5;
}
.wrapper >:first-child {
    margin-top: 0;
}
.wrapper >:last-child {
    margin-bottom: 0;
}
.desc {
    font-size: 1.2em;
}
.todo {
    background: #f9f9f9;
    padding: 1em;
    border-radius: 4px;
    color: #ccc;
    font-style: italic;
    font-weight: lighter;
    font-size: 0.9em;
}
.todo ul {
    margin: 0.4em 0;
    padding: 0 1em;
}
.todo ul li {
    list-style-position: inside;
}
h1 {
    margin: 0;
}
a {
    text-decoration: none;
    color: #2196f3;
}
a:hover {
    text-decoration: underline;
}
.emoticon-face {
    background: #ffeb3b;
    border-radius: 100%;
    width: 1.7em;
    height: 1.7em;
    transform: rotate(90deg);
    display: inline-block;
    vertical-align: middle;
    line-heigh: 1;
    margin: -0.4em 0.2em 0;
    text-align: center;
    border: 1px solid #fdd835;
    padding-left: 0.1em;
    -webkit-font-smoothing: antialiased;
}
.emoticon-face--no-rotation {
    transform: rotate(0deg);
}
code {
    padding: 0.2em 0.3em;
    background: #f5f5f5;
    margin: 0 0.2em;
    border-radius: 4px;
    font-size: 0.95em;
    font-family: 'Source Code Pro';
}
.tac {
    text-align: center;
}
.box {
    margin: 1em auto;
    border: 1px solid #ccc;
    border-radius: 3px;
    padding: 2em;
    overflow: hidden;
    position: relative;
    color: #333;
    line-height: 1.6;
    font-size: 1.2em;
    z-index: 2;
}
.box *:first-child {
    margin-top: 0;
}
.box *:last-child {
    margin-bottom: 0;
}
.bubble-aprox {
    width: 3em;
    height: 3em;
    top: 0;
    left: 0;
    position: absolute;
    border-radius: 0 0% 100% 0;
}
.bubble-aprox:hover   .bubble,
.bubble-aprox:hover   .bubble:before {
    padding: 0.2em;
    border-radius: 0 0 90% 0;
}
.bubble {
    position: absolute;
    color: #fff;
    height: 2.5em;
    width: 2.5em;
    transform-style: preserve-3d;
    border-radius: 0 0% 100% 0;
    top: 0;
    left: 0;
    z-index: 2;
    transition: 0.4s ease;
}
.bubble:before {
    content: '';
    height: 2.5em;
    width: 2.5em;
    transition: 0.8s ease;
    border-radius: 0 0% 100% 0;
    background: #7cb342;
    top: 0;
    left: 0;
    position: absolute;
    z-index: 1;
}
.bubble:hover {
    width: 100%;
    height: 100%;
}
.bubble:hover:before {
    border-radius: 0;
    width: 150%;
    height: 150%;
    transition: 0.8s ease;
}
.bubble:hover .bubble__icon {
    top: -50%;
    left: -50%;
    transition: 0.8s ease;
}
.bubble:hover .bubble__content {
    transition: 0.8s ease;
    top: 50%;
    left: 0;
    z-index: 4;
}
.bubble__icon {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 3;
    transition: 0.8s ease;
    padding: 0.6em 0.9em;
    line-height: 1;
    font-size: 1em;
}
.bubble__content {
    position: absolute;
    top: -200%;
    transform: translateY(-50%);
    transition: 0.4s ease;
    text-align: center;
    width: 100%;
    color: #fff;
    left: -200%;
    padding: 1.2em;
} 
</style>

实现这个效果,主要是利用伪元素,以及结合css3当中的transform,鼠标移动到指定的元素,从左上角,到右下角,气泡遮盖层是一个绝对定位元素

鼠标hover元素上时,改变top,left,width,height元素即可实现

0 人点赞