2016-08-17 2 views
0
<div> 
    <div class="row"> 
     <div class="col-md-4"> 
      <div class="cta-item cta-1"> 
       <a href="#"> 
        <div class="hover"><p>Serving food fine to fast. Come <span class="arrow">Hungry</span></p></div> 
        <p class="cta-title">Visit</p> 
       </a> 
      </div> 
     </div> 
     <div class="col-md-4"> 
      <div class="cta-item cta-2"> 
       <a href="#"> 
        <div class="hover"><p>Serving food fine to fast. Come <span class="arrow">Hungry</span></p></div> 
        <p class="cta-title">Shop</p> 
       </a> 
      </div> 
     </div> 
     <div class="col-md-4"> 
      <div class="cta-item cta-3"> 
       <a href="#"> 
        <div class="hover"><p>Serving food fine to fast. Come <span class="arrow">Hungry</span></p></div> 
        <p class="cta-title">Eat</p> 
       </a> 
      </div> 
     </div> 
    </div> 
</div> 

<script> 
$(document).ready(cta); 
$(window).resize(cta); 

function cta() { 
    var ctaWidth = $('.cta-item').width(); 
    var newHeight = ctaWidth - 40; 

    $('.cta-item').css('height', newHeight); 
} 
</script> 

Мой вопрос: как сделать высоту = ширина - 40 пикселей для конкретного элемента чистым css?Установите высоту равной ширине минус некоторое значение

Спасибо.

+0

Рассмотрите возможность использования полей и прокладок. – Damiano

+0

вы можете использовать 'calc (100vh - 40px)' или 'calc (100vw - 40px)', если вы хотите вычислять 'height' или' width' – vivekkupadhyay

+0

@vivekkupadhyay, но 100vh и 100vw - все о видовых экранах. Но мой вопрос касается ширины и высоты определенного элемента. –

ответ

-1

У CSS есть экспериментальный способ делать вычисления с чистым css.

Вы можете сделать:

width: calc(100% - 80px); 

Если вы wan't известково высоту вы можете сделать это:

--widthA: calc(100% -80px); 
width: --widthA; 
height: calc(--widthA - 200px); 

Edit !: Я добавил высоту известково на основе ширины ,

Если вы wan't, чтобы узнать больше об этом, я предлагаю: Mozilla Docs

+0

Поддержка браузера для вычисления довольно широка, http://caniuse.com/#search=calc – CBroe

+1

в вашем ответе 100% примерно ширина, но я спросил о высоте = ширина - 80px –

+0

@LeshaPipiev Сделал новую работу редактирования? – McBoman

0

Если вам нужно CSS работать в старых браузерах тоже есть способ с использованием того факта, что вертикальная прокладка всегда рассчитывается по отношению к ширине родительского элемента. Таким образом, вы можете сделать так, чтобы обеспечивать высоту:

// additional styles when Bootstrap css is loaded 
.cta-item { 
    position: relative; 
    background-color: #ffcccc; 
    *zoom: 1; 
} 

.cta-item::before { 
    width: 0; 
    float: left; 
    display: block; 
    content: ' '; 
    padding-bottom: 100%; /* makes height match width */ 
    margin-top: -40px; /* value substracted from height */ 
} 
// clearfix 
.cta-item::after { 
    content: ' '; 
    display: table; 
    clear: both; 
} 

Рабочий пример: https://jsfiddle.net/7m5vyaqs/1/

Он работает как мин-высота. Если вы хотите, чтобы это была максимальная высота, вы должны обернуть содержимое .cta-item в контейнер и установить его абсолютным. Нравится:

.cta-item > *:first-child { 
    position: absolute; 
    left: 0; 
    top: 0; 
    width: 100%; 
    height: 100%; 
} 
+0

спасибо за ответ. Не могли бы вы предоставить jsfiddle для ответа. –

+0

Конечно. Обновлен мой ответ. – Oliver

+0

Спасибо за помощь. Но вы уверены, что это работает? Я изменяю размер окна браузера, но ничего не меняется, кроме divs идет каждый под друг друга. –

Смежные вопросы