Получить два элемента рядом друг с другом для перекрытия

#css

#css

Вопрос:

Я хотел бы получить следующий результат: введите описание изображения здесь

Это два изображения, которые перекрываются.

Я довольно близко подошел к достижению этого с помощью таблицы и заполнения следующим образом:

 <div class="container">
  <table border="1">
    <tr> 
      <th width=500px>
        <div align="center">    
          <img
               src="./img/img_codemesomething.png"
               style="padding-left:100px"
               width=100% />    
        </div>
      </th> 
      <td width=500px>
        <div align="justify">       
          <img
               src="./img/img_recordmesomething.png"
               style="padding-right:100px"
               width=100% />    
        </div>
      </td>
    </tr>
  </table>
</div>
  

Однако в результате оба элемента становятся очень маленькими. Или левый начинает становиться больше правого. Затем я попытался использовать padding для обоих изображений (слева и справа), но padding-right ничего не делает, в то время как padding-left сдвигает изображения вправо, что означает, что они больше не центрированы.

Вот как это выглядит:

введите описание изображения здесь

(игнорируйте границы).

Если мне нравится результат, как показано на первом рисунке. и чтобы это было точно центрировано по ширине и высоте в браузере — как бы я продолжил об этом?

Спасибо 🙂

*** РЕДАКТИРОВАТЬ:

Css — это не что иное, как:

 .container{
    width:900px;
    margin:auto;
}
  

*** РЕДАКТИРОВАТЬ 2: Хорошо, итак, я подошел довольно близко. Единственная проблема сейчас в том, что все как бы сдвинуто вправо и больше не центрировано, но вот что я сделал:

 <div class="container">
    <div class="centered">
                    <table border="0" width=1400px>
                    <tr> 
                        <td width=500px height=400px>
                            <div>   
                                <img
                                    src="./img/img_codemesomething.png"
                                    style="padding-left:40"
                                    width=210%
                                    height=210%
                                </img>  
                            </div>
                        </td>   
                        <td width=500px height=400px>
                            <div>       
                                <img
                                    src="./img/img_recordmesomething.png"
                                    width=210%
                                    height=210%
                                </img>  
                            </div>
                        </td>   

                </table>
    </div>          
</div>
  

CSS:

 .centered {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.container{
    width:900px;
    margin:auto;
}
  

Результат:

введите описание изображения здесь

Я пытаюсь расположить его по центру, но я также проверю другое решение. Так что продолжайте в том же духе 🙂

Комментарии:

1. Можете ли вы создать скрипку или поделиться кодом, который вы использовали для достижения того, что у вас получилось, как если бы сейчас, чтобы мы могли проверить и помочь вам в соответствии с вашими требованиями?

2. @AKNair возможно, здесь что-то не так. код размещен в вопросе? разве вы этого не видите?

3. Я имел в виду свойства CSS, используемые для макета, с помощью которого вы достигли этого. Вот скрипка, которую я сделал с кодом, который вы опубликовали. Я не получаю макет, которым вы поделились, о котором идет речь: jsfiddle.net/dsy5gn7q/1

4. @AKNair смотрите обновление. на самом деле там не так много…

5. @innomotionmedia можете ли вы размещать ссылки на исходные изображения, а также ограничены ли вы в использовании только таблиц?

Ответ №1:

Вот ваше решение в соответствии с вашими требованиями, вы можете использовать изображение вместо цвета.

   <div class="container">
    <div class="traingle">
      <div class="triangle-left">
        <p>Code me something</p>
      </div>
      <div class="triangle-right">
        <p>Record me something</p>
      </div>
    </div>
  </div>
  

css идет сюда

 .traingle{
    position: absolute;
    width: 620px;
    top: 50%;
    left:50%;
    transform: translate(-50%, -50%);
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.triangle-left {
    width: 300px;
    border-top: solid 180px rgb(200,30,50);
    border-left: solid 0px transparent;
    border-right: solid 180px #00000000;
    margin-right: -156px;
  }
  .triangle-right {
    width: 300px;
    border-top: solid 0px rgb(200,30,50);
    border-left: solid 180px transparent;
    border-bottom: solid 180px rgb(200,30,50);
  }
   .traingle p{
    position: absolute;
    color: #fff;
    font-size: 20px;
    font-family: sans-serif;
   }

 .traingle .triangle-left p{
    top: 0px;
    left: 20px;
}
.traingle .triangle-right p{
    bottom: 0px;
    right: 20px;
}
  

Требуемый вывод

Обратитесь к примеру Codepen

Комментарии:

1. привет. это выглядит действительно хорошо. Однако я не смог реализовать ссылку (a) на оба. Я смог реализовать один к одному треугольник, но не другой. Не могли бы вы показать это мне? Спасибо!

Ответ №2:

Вы можете реализовать это на основе размеров реальных изображений. Значения 59% и 70% рассчитываются на основе размеров изображения.

 <style>
    .container {
        position: relative;
        /**
         * As we are using absolutely positioned elements, parent element's height will not consider them
         * If you want to use this component inside normal flow of the document, that would mess things up.
         * So to make sure that component occupies the height of its children
         * Calculated as 70 * 59 / 100
         */
        padding-top: 41.3%;
    }
    .imageContainer {
        /**
         * Calculated as (W   W - S) / 2 - G
         * (200 - 100 * (slope.width / image.width)) / 2 - gap
         * Here slope.width / image.width = 0.58
         */
        width: 70%;
        position: absolute;
        top: 0;
    }
    .psuedoContainer {
        position: relative;
        /**
         * To make sure that image always follows the aspect ratio,
         * even if the container width changes.
         * Calculated as 100 * (image.height / image.width) 
         */
        padding-top: 59%;
    }
    .psuedoHolder {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
    }
    img {
       height: 100%;
       width: auto; 
    }
</style>

<div class="component">
    <div class="container">
        <div class="imageContainer" style="left: 0;">
            <div class="psuedoContainer">
                <div class="psuedoHolder" style="text-align: left;">  
                    <img src="./img_codemesomething.png" />  
                </div>
            </div>
        </div>
        <div class="imageContainer" style="right: 0;">
            <div class="psuedoContainer">
                <div class="psuedoHolder" style="text-align: right;">
                    <img src="./img_recordmesomething.png" />
                </div>
            </div>
        </div>
    </div>
</div>
  

PS: Вы можете изменить ширину .component , и все остальное будет следовать набору, и вы можете расположить .component его там, где захотите

Комментарии:

1. интересен. однако в результате получается всего два изображения, которые не перекрываются : (

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

3. это так же, как если бы изображения должны были располагаться рядом друг с другом, но не перекрываться. это изображения, которые я использую. Я рад видеть, что вы придумали 🙂 wetransfer.com/downloads /…

4. Я не могу добиться этого с помощью таблицы, процентное значение в img не соответствует ширине контейнера из-за таблицы, я собираюсь реализовать это с помощью divs вместо этого

5. Очень потрясающий новый способ сделать это. Однако один незначительный недостаток: я не могу реализовать ссылку на оба изображения. Добавление HREF работает только с правым треугольником, а не с левым. Не могли бы вы показать мне, как добавить ссылку на оба? Большое вам спасибо!