首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三角形背景顶部的HTML图像

三角形背景顶部的HTML图像
EN

Stack Overflow用户
提问于 2021-07-27 15:45:49
回答 2查看 45关注 0票数 1

我有一个三角形背景上的图像,但是看到有一条线穿过图像。我尝试将z-index与相对位置和绝对位置一起使用,但似乎不起作用。有人能帮帮我吗?非常感谢。

代码语言:javascript
复制
/* Reset. */
* {
    box-sizing: border-box;
}

body {
    margin: 0;
    padding: 0;
    font-size: 100%;
    font-family: Arial, Helvetica, sans-serif;
}

/* Panels. */
.splitview {
    position: relative;
    width: 100%;
    min-height: 45vw;
    overflow: hidden;
}

.panel {
    position: absolute;
    width: 100vw;
    min-height: 45vw;
    overflow: hidden;
}

    .panel .content {
        position: absolute;
        width: 100vw;
        min-height: 45vw;
        color: #FFF;
    }

    .panel .description {
        width: 25%;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        text-align: center;
    }

    .panel img {
        box-shadow: 0 0 20px 20px rgba(0, 0, 0, 0.15);
        width: 35%;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }


.bottom {
    background-color: rgb(44, 44, 44);
    z-index: 1;
}

    .bottom .description {
        right: 5%;
    }

.top {
    background-color: rgb(77, 69, 173);
    z-index: 2;
    width: 50vw;

    /*-webkit-clip-path: polygon(60% 0, 100% 0, 100% 100%, 40% 100%);
    clip-path: polygon(60% 0, 100% 0, 100% 100%, 40% 100%);*/
}

    .top .description {
        left: 5%;
    }

/* Handle. */
.handle {
    height: 100%;
    position: absolute;
    display: block;
    width: 5px;
    top: 0;
    left: 50%;
    z-index: 3;
}

/* Skewed. */
.skewed .handle {
    top: 50%;
    transform: rotate(30deg) translateY(-50%);
    height: 200%;
    -webkit-transform-origin: top;
    -moz-transform-origin: top;
    transform-origin: top;
}

.skewed .top {
    transform: skew(-30deg);
    margin-left: -1000px;
    width: calc(50vw + 1000px);
}

.skewed .top .content {
    transform: skew(30deg);
    margin-left: 1000px;
}

/* Responsive. */
@media (max-width: 900px) {
    body {
        font-size: 75%;
    }
}
代码语言:javascript
复制
<div class="splitview skewed">
        <div class="panel bottom">          
            <div class="content">
                <div class="description">
                    <h1>My name is John Snow.</h1>
                    <p>I like making popcorn with icicles alot.</p>
                </div>

                <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/210284/original-image.jpg" alt="Original">
            </div>
        </div>

        <div class="panel top">        
            <div class="content">
                <div class="description">
                    <h1>I dream about this girl everyday, but cannot seem to forget her.</h1>
                    <p>People say not many people can fall in love, and it's good I can experience it, but what is unrequited love worth actually.</p>
                </div>

                <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/210284/original-image.jpg" alt="Duotone">
            </div>
        </div>

        <div class="handle"></div>
    </div>

EN

回答 2

Stack Overflow用户

发布于 2021-07-27 15:59:57

只使用一个图像,并将其放在面板之外。

代码语言:javascript
复制
/* Reset. */

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  padding: 0;
  font-size: 100%;
  font-family: Arial, Helvetica, sans-serif;
}

.splitview img {
  z-index: 3;
  box-shadow: 0 0 20px 20px rgba(0, 0, 0, 0.15);
  width: 35%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}


/* Panels. */

.splitview {
  position: relative;
  width: 100%;
  min-height: 45vw;
  overflow: hidden;
}

.panel {
  position: absolute;
  width: 100vw;
  min-height: 45vw;
  overflow: hidden;
}

.panel .content {
  position: absolute;
  width: 100vw;
  min-height: 45vw;
  color: #FFF;
}

.panel .description {
  width: 25%;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  text-align: center;
}

.bottom {
  background-color: rgb(44, 44, 44);
  z-index: 1;
}

.bottom .description {
  right: 5%;
}

.top {
  background-color: rgb(77, 69, 173);
  z-index: 2;
  width: 50vw;
  /*-webkit-clip-path: polygon(60% 0, 100% 0, 100% 100%, 40% 100%);
    clip-path: polygon(60% 0, 100% 0, 100% 100%, 40% 100%);*/
}

.top .description {
  left: 5%;
}


/* Handle. */

.handle {
  height: 100%;
  position: absolute;
  display: block;
  width: 5px;
  top: 0;
  left: 50%;
  z-index: 3;
}


/* Skewed. */

.skewed .handle {
  top: 50%;
  transform: rotate(30deg) translateY(-50%);
  height: 200%;
  -webkit-transform-origin: top;
  -moz-transform-origin: top;
  transform-origin: top;
}

.skewed .top {
  transform: skew(-30deg);
  margin-left: -1000px;
  width: calc(50vw + 1000px);
}

.skewed .top .content {
  transform: skew(30deg);
  margin-left: 1000px;
}


/* Responsive. */

@media (max-width: 900px) {
  body {
    font-size: 75%;
  }
}
代码语言:javascript
复制
<div class="splitview skewed">
  <div class="panel bottom">
    <div class="content">
      <div class="description">
        <h1>My name is John Snow.</h1>
        <p>I like making popcorn with icicles alot.</p>
      </div>
    </div>
  </div>
  <div class="panel top">
    <div class="content">
      <div class="description">
        <h1>I dream about this girl everyday, but cannot seem to forget her.</h1>
        <p>People say not many people can fall in love, and it's good I can experience it, but what is unrequited love worth actually.</p>
      </div>
    </div>
  </div>

  <div class="handle"></div>
  <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/210284/original-image.jpg" alt="Duotone">
</div>

票数 1
EN

Stack Overflow用户

发布于 2021-07-27 23:25:45

当进行某种转换或调整大小时,可能很难让两个元素完全对齐,因为算法可能会导致需要部分CSS像素,这可能会导致在现代高分辨率屏幕上转换为多个屏幕像素时出现问题。

你的伪线看起来不像CSS像素那么宽,在这些计算过程中可能是屏幕像素“落在后面”。

我发现你的布局很难遵循,因为有倾斜和其他变换。

看一下布局,我想知道一个更简单的方法--一个带有flex的3列网格用来在面板中居中项目是否足够了?这将使维护变得更容易。倾斜似乎是背景“三角形”形状所必需的,此代码段将它们替换为倾斜的线性渐变作为内容元素的背景。不需要倾斜或其他变换。

代码语言:javascript
复制
* {
  box-sizing: border-box;
}

body {
  margin: 0;
  padding: 0;
  font-size: 100%;
  font-family: Arial, Helvetica, sans-serif;
}

.content {
  position: absolute;
  min-height: 45vw;
  width: 100vw;
  color: #fff;
  text-align: center;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  background-image: linear-gradient(-60deg, rgb(44, 44, 44) 0, rgb(44, 44, 44) 48%, rgb(77, 69, 173) 48%, rgb(77, 69, 173) 100%);
}

.panel {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

.panel .description {
  width: 75%;
}

.panel img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  /* commented out as I don't understand it's use here box-shadow: 0 0 20px 20px rgba(0, 0, 0, 0.15);*/
}
代码语言:javascript
复制
<body>
  <div class="content">
    <div class="panel">
      <div class="description">
        <h1>I dream about this girl everyday, but cannot seem to forget her.</h1>
        <p>People say not many people can fall in love, and it's good I can experience it, but what is unrequited love worth actually.</p>
      </div>
    </div>
    <div class="panel">
      <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/210284/original-image.jpg" alt="Original">

    </div>
    <div class="panel">
      <div class="description">
        <h1>My name is John Snow.</h1>
        <p>I like making popcorn with icicles alot.</p>
      </div>
    </div>
  </div>
  <div class="handle"></div>
  </div>
</body>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68540852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档