那些年你被哪些样式需求伤害过?

前端宇宙

共 6879字,需浏览 14分钟

 ·

2021-09-14 09:11

自从做了前端开发这个工作后,你是否时不时收到PM产品经理的各种恶心你的样式?没有?那你公司的PM肯定就不够"敬业"了,居然没有恶心到你。

不管怎么说,遇到那些恶心的样式需求,多少会跟UI、PM产品经理理论一番,但是也会失败的时候,没办法👐 ,只能迎难而上咯。这里我就整理下我曾经被恶心伤害过的样式需求。

三层背景

先来个开胃小菜:

可以看到这样样式是类似渐变的效果。首先想到的应该是渐变样式,没错,渐变倒是可以实现上述样式,但是真正做到样式那样的颜色过度占比,恐怕不是那么好协调。(经常被渐变的调整鞭打😭 )

还有小伙伴说:“这还不简单,直接上图片!UI妹纸,切下这个背景图”。

哈哈哈,完美解决,全剧终!停下正在鼓掌的手,今天我们用不为人知的解决方案搞定它!

正如标题所示:三层背景,我们可以联想到伪类元素,直接加个::after::before就完事了。

<div class="footer"></footer>

<style>
// 底色
.footer {
  background:#eef0f3;
}
// 左边的颜色值
.footer::before {
  background:#D0FC00;
}
// 左右的颜色值
.footer::after {
  background:#366CE3;
}
</style>

怎么样,可以说非常简单吧。开胃小菜吃完了,咱们继续!

实现对话气泡效果

先上图:

这个需求也很常见吧!思路是什么呢?

先用一个元素做成一个正方形,然后再从正方形变成想要方向的三角形,最后利用定位定在你想要的位置上。比如这样:

接着借用第二个元素,利用上面的原理去制作一个白色的正方形,然后制作成一个白色的三角形,最后覆盖掉上面三角元素的阴影部分。

我先去掉上面元素后,它是长这样的:

可以看到第二个元素是一个旋转了45度的白色的正方形

最后直接上代码吧。

// html
<div class="box">
  <span class="bot"></span>
  <span class="cover"></span>
  <p>气泡对话框效果</p>
</div>

// css
.box {
  margin50px auto;
  width300px;
  padding30px 20px;
  border5px solid #beceeb;
  position: relative;
}
.box span {
  width0;
  height0;
  font-size0;
  overflow: hidden;
  position: absolute;
}
.box span.bot {
  border-width20px;
  border-style: solid dashed dashed;
  border-color#beceeb transparent transparent;
  left80px;
  bottom: -40px;
}
.box span.cover {
  border-width20px;
  border-style: solid dashed dashed;
  border-color#ffffff transparent transparent;
  left80px;
  bottom: -33px;
}

其他方向的或者大小形状都可以根据三角形的样式去控制。

改变input 提示文字的样式

input的placeholder样式一直存在兼容性,尤其在手机端上。所以?直接上代码吧。

<input type="textplaceholder="请输入名字" style="padding:10px 15px">

input::-webkit-input-placeholder {
  /* WebKit browsers */
  color#4ee03a;
}
input:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color#4ee03a;
}
input::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color#4ee03a;
}
input:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color#4ee03a;
}

书签

直接上设计图:

相信看到上面的"开胃菜",这道需求应该也有些许思路吧。黄色背景的框就没什么说得了,就是加了CSS3的"背投"效果。

上面的胶带纸效果有点意思了。这个微微倾斜的胶带是CSS3写出来的效果,有RGBA显示半透明背景色,box-shadow显示淡淡的投影,transform旋转效果。元素使用::after伪类生成。

// html
<div class="page">
  <p>PM大佬的脑洞大开</p>
  <p>PM产品大佬给我的新需求!PM产品大佬给我的新需求!</p>
  <p>PM产品大佬给我的新需求!PM产品大佬给我的新需求!</p>
  <p>PM产品大佬给我的新需求!PM产品大佬给我的新需求!</p>
  <p>PM产品大佬给我的新需求!PM产品大佬给我的新需求!</p>
  <p>PM产品大佬给我的新需求!PM产品大佬给我的新需求!</p>
</div>

//css
.page {
  width300px;
  margin0 auto;
  width600px;
  padding1em 0 2em;
  background#f4f39e;
  -moz-box-shadow0 2px 10px 1px rgba(0000.2);
  -webkit-box-shadow0 2px 10px 1px rgb(0 0 0 / 20%);
  box-shadow0 2px 10px 1px rgb(0 0 0 / 20%);
  position: relative;
}
.page:after {
  width180px;
  height30px;
  content" ";
  margin-left: -90px;
  border1px solid rgba(2002002000.8);
  backgroundrgba(2542542540.6);
  -moz-box-shadow0px 0 3px rgba(0000.1);
  -webkit-box-shadow0px 0 3px rgba(0000.1);
  box-shadow0px 0 3px rgba(0000.1);
  -moz-transformrotate(-5deg);
  -webkit-transformrotate(-5deg);
  -o-transformrotate(-5deg);
  transformrotate(-5deg);
  position: absolute;
  left50%;
  top: -15px;
}

花里胡哨登录按钮

先来看演示效果

嗯,确实略带花哨。直接开代码吧。

// html
<div class="wrap">
  <div class="btn-slide">
    <span class="circle"><i class="fa fa-rocket"></i></span>
    <span class="title">登录</span>
    <span class="title-hover">点击登录</span>
  </div>
</div>

// css
.btn-slide {
  position: relative;
  display: inline-block;
  height50px;
  width200px;
  line-height50px;
  border-radius50px;
  background#fdfdfd;
  border2px solid #ae111c;
  transition0.5s;
}

.btn-slide:hover {
  background-color#ae111c;
}

.btn-slide:hover span.circle {
  right100%;
  margin-right: -45px;
  background-color#fdfdfd;
  color#ae111c;
}

.btn-slide:hover span.title {
  right40px;
  opacity0;
}

.btn-slide:hover span.title-hover {
  opacity1;
  right40px;
}

.btn-slide span.circle {
  display: block;
  background-color#ae111c;
  color#fff;
  position: absolute;
  float: right;
  margin5px;
  line-height42px;
  height40px;
  width40px;
  top0;
  right0;
  transition0.5s;
  border-radius50%;
}

.btn-slide span.title,
.btn-slide span.title-hover {
  position: absolute;
  right90px;
  text-align: center;
  margin0 auto;
  font-size16px;
  font-weight: bold;
  color#ae111c;
  transition0.5s;
}

.btn-slide span.title-hover {
  right80px;
  opacity0;
  color#fff;
}

以上就是PM产品大佬提给我的需求了,你还有什么补充吗?

浏览 51
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报