Как убрать пропасть между двумя перекосами? - PullRequest
0 голосов
/ 01 мая 2018

Я хочу, чтобы две части одного изображения были объединены в одно исходное изображение, где каждая часть должна иметь форму треугольника.

Я нашел codepen , где есть два элемента с вложенными изображениями, где я удалил поля, но между элементами есть уродливая белая граница (разрыв).

Как я могу удалить это?

image with white border


<div class='pageOption'>
  <a href='#' class='option' data-inf='photo'>
    <img src='http://imgsrc.hubblesite.org/hu/db/images/hs-2013-06-a-large_web.jpg'>
  </a>
  <a href='#' class='option' data-inf='cinema'>
    <img src='http://imgsrc.hubblesite.org/hu/db/images/hs-2013-06-a-large_web.jpg'>
  </a>
</div>

body { background: gainsboro; }
.pageOption {
  overflow: hidden;
  position: relative;
  margin: 0 auto;
  width: 40em; height: 27em;
}
.option, .option img { width: 100%; height: 100%; }
.option {
  overflow: hidden;
  position: absolute;  
  /* arctan(27 / 40) = 34.01935deg 
   * need to skew by 90deg - 34.01935deg = 55.98065deg
  */
  transform: skewX(-55.98deg);
}
.option:first-child {
/*   left: -.25em; */
  transform-origin: 100% 0;
}
.option:last-child {
/*   right: -.25em; */
  transform-origin: 0 100%;
}
.option img { opacity: 1; transition: .5s; }
.option img:hover { opacity: 1; }
.option img, .option:after {
  transform: skewX(55.98deg);
  transform-origin: inherit;
}
.option:after {
  position: absolute;
  margin: .5em 1.65em;
  color: white;
  font: 500 1.25em Courier;
  letter-spacing: .1em;
  text-transform: uppercase;
  content: attr(data-inf);
}
.option:first-child:after { top: 0; left: 0; }
.option:last-child:after { right: 0; bottom: 0; }

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Вы можете сделать это по-другому, сохранив только один перекошенный элемент и используя фоновое изображение для другого. Вы можете оставить второй элемент a, если хотите использовать его в качестве ссылки.

body {
  background: gainsboro;
}

.pageOption {
  overflow: hidden;
  position: relative;
  margin: 0 auto;
  width: 40em;
  height: 27em;
  background: url(https://imgsrc.hubblesite.org/hu/db/images/hs-2013-06-a-large_web.jpg) center/100% 100% no-repeat;
}

.option,
.option img {
  width: 100%;
  height: 100%;
}

.option {
  overflow: hidden;
  position: absolute;
  /* arctan(27 / 40) = 34.01935deg 
   * need to skew by 90deg - 34.01935deg = 55.98065deg
  */
  transform: skewX(-55.98deg);
}

.option:first-child {
  /*   left: -.25em; */
  transform-origin: 100% 0;
}

.option:last-child {
  /*   right: -.25em; */
  transform-origin: 0 100%;
}

.option img {
  opacity: 1;
  transition: .5s;
}

.option img:hover {
  opacity: 1;
}

.option img,
.option:after {
  transform: skewX(55.98deg);
  transform-origin: inherit;
}

.option:after {
  position: absolute;
  margin: .5em 1.65em;
  color: white;
  font: 500 1.25em Courier;
  letter-spacing: .1em;
  text-transform: uppercase;
  content: attr(data-inf);
}

.option:first-child:after {
  top: 0;
  left: 0;
}
.option:last-child:after {
  bottom: 0;
  right: 0;
}
<div class='pageOption'>
  <a href='#' class='option' data-inf='photo'>
    <img src='https://imgsrc.hubblesite.org/hu/db/images/hs-2013-06-a-large_web.jpg'>
  </a>
  <a href='#' class='option' data-inf='cinema'>

  </a>
</div>
0 голосов
/ 01 мая 2018

Изменить эти стили

.option:first-child {
  left: 0.1em;
  transform-origin: 100% 0;
}
.option:last-child {
  right: 0;
  transform-origin: 0 100%;
}
...