2013-03-05 2 views
0

Мое дело в следующем. У меня есть div с двумя детьми divs. Я бы хотел, чтобы «event» div был 300px ширины и высоты. Первое требование состоит в том, чтобы сохранить размер div «event», когда элементы «content» и «bar» используют 100% ширины родительского элемента. Во-вторых, на данный момент границы элемента «контент» не видны. Можно ли встраивать все внутри без использования жестко заданных значений и правильно отображать этот дисплей в большинстве современных браузеров (FF, Chrome, Opera, IE7 +)?Правильный размер div без использования значений пикселей

Это то, что я хотел бы достичь (обратите внимание на левую красную полосу, которая принимает высоту 100% и не конфликтует с серой рамкой вокруг элемента события):

enter image description here

И это это то, что у меня есть. Html:

enter image description here

<div id="wrapper"> 
    <div id="scheduler"> 
     <div class="event" style="top: 30px; height: 300px; width: 300px"> 
      <div class="bar"></div> 
      <div class="content"> 
       <div class="inner-content">Some text</div> 
      </div> 
     </div> 
    </div> 
</div> 

, CSS:

#wrapper { 
    width: 600px; 
    height: 600px; 
} 
#scheduler { 
    background-color: #E1FFFE; 
    display: block; 
    height: 100%; 
    width: 100%; 
    padding: 0 10px; 
    position: relative; 
} 
#scheduler .event { 
    display: block; 
    float: left; 
    position: relative; 
    width:100%; 
    overflow:hidden; 
} 
#scheduler .event .bar { 
    background-color: red; 
    display: inline; 
    float: left; 
    height: 100%; 
    position: relative; 
    width: 5px; 
} 
#scheduler .event .content { 
    background-color: white; 
    border: 1px solid #CCCCCC; 
    border-left: none; 
    display: inline; 
    float: left; 
    height: 100%; 
    position: absolute; 
    width: 100%; 
} 

и работоспособной демо:

http://jsfiddle.net/6nTvD/1/

+0

Я очень ценю предоставленную jsFiddle! К сожалению, однако, быстро прочитав ваш вопрос, я не могу понять ваши желаемые результаты или то, как ваш текущий jsFiddle не удовлетворяет. Вы пытаетесь сохранить границы? – ChaseMoskal

+0

Да, покажите границы, но сохраните «event» div 300x300. Если «переполнение: скрыто» удалено, границы видны, но размер увеличивается. –

+1

Возможно, посмотрите на 'box-sizing: border-box;' ?? – ChaseMoskal

ответ

0

Я не думаю, что я полностью понимаю ваше затруднительное положение, однако, с той лишь разницей, что я могу шпионить между вашим желаемым результатом, а ваша текущая работа - наличие границ - переключение overflow:hidden; на #scheduler .event на overflow:visible; производит что-то, что визуально смотрит на меня так, как будто оно достигает желаемого эффекта.

+0

да, но размер увеличен (не рассчитанный размер, по крайней мере, в firebug, но визуально он превышает исходные границы) –

1

Попробуйте это. Вынуть bar DIV, а затем изменить .content CSS для:

#scheduler .event .content { 
    background-color: white; 
    border: 1px solid #CCCCCC; 
    border-left: 5px solid red; // replaces the bar 
    display: inline; 
    float: left; 
    height: 99%; // a bit of a hack to fit the border in 
    position: relative; 
    width: 98%; // hack 
} 

http://jsfiddle.net/Dp3yz/

EDIT: Код с .bar еще на месте:

#scheduler .event .bar { 
    background-color: red; 
    display: inline; 
    float: left; 
    height: 99.9%; /* Small offset at bottom */ 
    position: relative; 
    width: 5px; 
} 
#scheduler .event .content { 
    background-color: white; 

    /* revised border */ 
    border-top: 1px solid #CCCCCC; 
    border-right: 1px solid #CCCCCC; 
    border-bottom: 1px solid #CCCCCC; 

    display: inline; 
    float: left; 
    height: 99%; 
    position: absolute; 
    width: 98%; 
} 

Новая версия: http://jsfiddle.net/JJrC9/1/

+0

Я чувствую себя уверенным, что желаемые результаты могут быть достигнуты без каких-либо хаков, и что все это код может быть значительно упрощен - я слишком занят, и на самом деле не понимаю желаемых результатов, достаточных для продолжения работы, больше работы будет идти на попытку декодирования того, что на самом деле означает OP. Если бы это было объяснено лучше в исходном вопросе, я чувствую, что у нас не будет проблем с созданием решения, которое охватывает только несколько строк в CSS:/ +1 к вашему ответу, хотя для обеспечения лучшего SO может в этой ситуации , – ChaseMoskal

+1

, если я заменил бар границей, верхняя граница и левая граница столкнутся, что я пытаюсь избежать. –

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