html - 使用 HTML 和 CSS 剪切形状

标签 html css pseudo-element

<分区>

我正在尝试设置一个横幅,其中包含一个带有切口的叠加层。叠加层下方是一张图片。

我正在尝试弄清楚如何在 HTML 和 CSS 中创建它,到目前为止,我的实验已经看到我使用了伪元素,但我正在努力按照如下所示的形状和位置重新创 build 计。

我当前的 HTML 如下所示:

<header class="main" style="background-image: url(./assets/images/bg-hero.jpg)">
    <div class="container">
        <div class="row">
            <div class="col-12">
                <div class="row row--no-pad">
                    <div class="col-6">
                        <a href="/">
                            <img src="./assets/images/logo.png" alt="">
                        </a>
                    </div>

                    <div class="col-6">
                        <a href="#" class="menu-toggle"></a>
                    </div>
                </div>

                <div class="row">
                    <div class="banner">
                        <div class="row">
                            <div class="col-12">
                                <h1>Lorem ipsum dolor sit amet</h1>

                                <p>Lorem ipsum dolor sit amet lorem ipsum dolor sit amet, L lorem ipsum dolor sit amet.</p>

                                <a href="#" class="button button--primary">View our services</a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</header>

设计如下:

enter image description here

谢谢,

最佳答案

您正在寻找的是 image clipping .网上有很多文章介绍了如何使用 CSS ( here is one )。这个过程非常简单,因为它只需要一行 CSS 就可以完成这项任务。您需要使用 clip-path 才能完成此操作,我强烈建议您阅读 the documentation在上面。

构建 clip-path 可能很困难,具体取决于您的目标,但是 Clippy是一个非常有用的在线剪辑路径助手。但是,根据您提供的图像,以下将起作用:

html, body {
  margin: 0;
  height: 100%;
  background-color: #124;
  background-image: linear-gradient(to right, #111, #124);
  background-image: -webkit-linear-gradient(to right, #111, #124);
}
.background-image {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/2940219/GIF_Koi_Pond.gif');
  background-size: cover;
  background-position: center;
  clip-path: polygon(56% 0, 78% 50%, 56% 100%, 31% 100%, 52% 50%, 28% 0);
}
.main-content {
  position: absolute;
  top: 0;
  left: 0;
  color: #fff;
  display: flex;
  justify-content: center;
  flex-direction: column;
  height: 100%;
  padding: 15px;
}
.main-content h1 {
  width: 250px;
  margin: 0;
}
.main-content a {
  color: #fff;
  background-color: #3a7;
  text-decoration: none;
  padding: 5px 25px;
  width: 150px;
  text-align: center;
}
<div class="background-image"></div>
<div class="main-content">
  <h1>Lorem ipsum dolor sit amet</h1>
  <p>Lorem ipsum dolor sit amet lorem ipsum dolor sit amet, L lorem ipsum dolor sit amet.</p>
  <a href="#" class="button button--primary">View our services</a>
</div>

您最感兴趣的部分是:

clip-path: polygon(56% 0, 78% 50%, 56% 100%, 31% 100%, 52% 50%, 28% 0);

此外,不要忘记 clip-path 有一个需要考虑的 -webkit 版本。

clip-path: polygon(56% 0, 78% 50%, 56% 100%, 31% 100%, 52% 50%, 28% 0);
-webkit-clip-path: polygon(56% 0, 78% 50%, 56% 100%, 31% 100%, 52% 50%, 28% 0);

另一件要记住的事情是,当您将 clip-path 应用于诸如 div 之类的元素时,您不仅仅是在剪切 background-image ,而是剪切整个元素。

关于html - 使用 HTML 和 CSS 剪切形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921700/

相关文章:

html - IE10 : 'visibility:visible' on before pseudo-element of 'visibility:hidden' element

javascript - SVG 文本元素的就绪事件

javascript - 将 javascript 元素背景图像设置为等于下载网址

html - 为什么 col-xs-0 占据了 100% 的行宽?

javascript - 如何使用 Easeljs 将 Click 事件添加到 spriteSheet?

html - Bootstrap 网格 3x3 Firefox 与 Chrome 错误

html - div后面的div

css - 用户界面网格 : Combining auto-size column with with pinnedRight results in a strange gap

javascript - 使用 javascript(或 jQuery)选择和操作 CSS 伪元素,例如::before 和::after

css - 光标 :pointer on pseudo element IE