可以在CSS中制作这个图像吗?

时间:2017-11-15 13:22:39

标签: html css image css3 css-animations

我在photoshop中做过些什么。你可以在这里看到图片: image

背景中的三个三角形指的是我网站上的3个不同页面。我想知道是否有可能将这样的图像放在CSS中,因为我希望它们像链接一样工作,当你将鼠标悬停在它上面时放一些简单的缩放动画。我实际上是非常棒的CSS和整体上的新手,所以如果不进行大量的研究就很难做到,但我希望你们能帮助我并给我一个开始的方法。感谢任何帮助,非常感谢!

为了清楚起见,3个三角形应该成为3张单独的图片。如果重要的话,我被迫在学校使用flexbox。再次感谢。

4 个答案:

答案 0 :(得分:1)

所以这是一篇关于如何在CSS中创建它的草稿。基本上我制作了三个正方形(.triangle.triangle3),给它们一个旋转(transform: rotate(45deg);)并向每个正方形添加了一个透明度(background-image: linear-gradient( to top left, red, transparent 50%);)的渐变。这会创建基本的三角形形状,因为如果它们大到足以越过视口,则隐藏正方形的其他两半。我使用position: absolute;将元素放在彼此旁边。

我没有使用flexbox,但我不认为在这种情况下使用flexbox是正确的。

另一点需要指出:如果你不想要45°角,你也可以使用transform:skew。它会扭曲元素,并为您提供创建不同角度的可能性。 This是一个很好的资源。

body {
  background: black;
  position: relative;
  width: 475px;
}

.triangle {
  height: 200px;
  width: 200px;
  transform: rotate(135deg);
  background-image: linear-gradient(rgba(0, 255, 0, 1), rgba(0, 255, 0, 0));
  position: absolute;
  left: 0;
  margin-top: 30%;
}

.triangle2 {
  height: 200px;
  width: 200px;
  transform: rotate(-135deg);
  background-image: linear-gradient(rgba(0, 0, 255, 1), rgba(0, 0, 255, 0));
  position: absolute;
  right: 0;
  margin-top: 30%;
}

.triangle3 {
  height: 200px;
  width: 200px;
  transform: rotate(45deg);
  background-image: linear-gradient( to top left, red, transparent 50%);
  position: absolute;
  right: 0;
  left: 0;
  margin: 0% auto;
}

.wrapper {
overflow: hidden;
}
<div class="triangle"></div>
<div class="triangle2"></div>
<div class="triangle3"></div>

答案 1 :(得分:1)

您可以使用渐变,阴影和混合混合模式,但最好和最有效的是SVG。 例如,如果您想花几个小时画出形状,那就开始了。

&#13;
&#13;
.img {
  float:left;
  background:
    radial-gradient(circle at bottom center, transparent 20%, black 90%),
    linear-gradient( 50deg, rgba(125, 60, 213, 0.7) 32%, transparent 32.5% ),
    linear-gradient(-50deg, rgba(0, 108, 179, 0.7) 32%, transparent 32.5%) #000;
  min-width:400px;
}
.img:before {/* to keep ratio*/
  content:'';
  float:left;
  padding-top:66.66%;
}
.img:after {/* to draw stars spots */
  content:'';
  display:block;
  height:2px;
  width:2px;
  border-radius:50%;
  box-shadow: 50px 10px 1px  white, 55px 11px 1px  white, 45px 12px 1px  white, 40px 25px 1px  white;
}
.moon {
  float:left;
  margin:10% 1%;
  width:9%;
  padding-top:9%;
  box-shadow:0.30em 0.30em 0 0.25em gold ;
  border-radius:50%;
}
.star {
  position:relative;
  float:left;
  width: 2.5%;
  padding-top:1.25%;
  margin:3em;
  transform:rotate(-20deg);
}
.star:before , .star:after{
  content:'';
  position:absolute;
  top:0;
  left:0;
  background:linear-gradient(45deg, rgb(247, 237, 135),gold);
  height:100%;
  width:100%;
  transform:skew(50deg) rotate(10deg)
}
.star:after {  
  transform:skew(-50deg) rotate(50deg)
}
&#13;
<div class="img">
  <b class="moon"></b>
  <b class="star"></b>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用以下工具转换base64中的图片(或单个元素):https://www.base64-image.de/

enter image description here

这是将事物编码为html的最古老的方法之一(1987年首次提出!)。这是一种将不同类型的数据转换为一系列对HTML安全的字母和数字的方法。其中一种数据类型是图像。

我无法在此处粘贴示例代码,因为它太长了。

答案 3 :(得分:-1)

你可以创建一个div容器,它将包含背景背景的图像,然后你只需添加div位于里面,感谢位置:absolute;使用顶部,底部,右侧,左侧。 像这样:

&#13;
&#13;
.container {
  background-image:url("https://i.stack.imgur.com/8bUXt.png");
  width:500px;
  height:500px;
   }
.triangle1 {
  position:absolute;
  top:0px;
  left:0px;
}
.triangle2 {
  position:absolute;
  top:100px;
  left:50px;
}
.triangle3 {
  position:absolute;
  top:300px;
  left:300px;
}
&#13;
<div class="container">
  <div class="triangle1">
      <img src="https://alexanderssteak.com/wp-content/uploads/2016/05/starfav.png" alt="">
  </div>
  <div class="triangle2">
      <img src="https://alexanderssteak.com/wp-content/uploads/2016/05/starfav.png" alt="">
  </div>
  <div class="triangle3">
      <img src="https://alexanderssteak.com/wp-content/uploads/2016/05/starfav.png" alt="">
  </div>
  
</div>
&#13;
&#13;
&#13;