Как убрать белый промежуток между двумя перекошенными изображениями?

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

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

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

Как убрать белый промежуток между двумя перекошенными изображениями?


<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; }

@NanditaAroraSharma не помогает, просто скрывает элемент

Nazar Kotsyuba 01.05.2018 15:29

Если вы установите для левого и правого ноль в приведенном вами примере, вы получите его без зазоров, но небольшой белый артефакт (по крайней мере, на Mac) является результатом непрозрачности, показывающей цвет фона, если вы установите черный цвет тела, он будет без зазоров : codepen.io/NeilWkz/pen/yjMrMZ

NeilWkz 01.05.2018 15:39

переместив .option:last-child на 1px вправо, убрал пробел codepen.io/anon/pen/ervoxN

Taki 01.05.2018 15:57

@NeilWkz это определенно менее заметно, но все же не идеальное решение для одного изображения

Nazar Kotsyuba 01.05.2018 16:02

@Taki ваше решение очень похоже на то, что предлагает Нандита Арора Шарма ниже, но у него такая же проблема с перемещенными углами изображение

Nazar Kotsyuba 01.05.2018 16:13
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
5
333
1

Ответы 1

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

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

Немного сдвинув влево, правая часть будет отображаться в нижнем левом углу, подумайте о чем-то подобном, применив margin-left: 1px к правой стороне, но вы получите ту же проблему.

Marc Hjorth 01.05.2018 15:37

Другие вопросы по теме