2010-10-17 26 views
17

Mam dwa div, jeden po lewej, a drugi po prawej. Teraz chcę podzielić te dwa elementy div na granice między nimi. Ale granica z pełną wysokością wygląda źle.Jak kontrolować wysokość granicy?

Chcę kontrolować wysokość granicy. Jak mogłem to zrobić?

Odpowiedz

31

Obramowanie będzie zawsze na całej długości pola zawierającego (wysokość elementu plus jego dopełnienie), nie można nim sterować za wyjątkiem regulacji wysokości elementu, do którego ma zastosowanie. Jeśli wszystko, co potrzebne jest pionowa przegroda, to mógł zastosowanie:

<div id="left"> 
    content 
</div> 
<span class="divider"></span> 
<div id="right"> 
    content 
</div> 

z CSS:

span { 
display: inline-block; 
width: 0; 
height: 1em; 
border-left: 1px solid #ccc; 
border-right: 1px solid #ccc; 
} 

Demo at JS Fiddle wyregulować wysokość span.container dostosować granicę 'height'.

Lub użyć pseudo-elementy (::before lub ::after), biorąc pod uwagę następujące HTML:

<div id="left">content</div> 
<div id="right">content</div> 

Poniższy CSS dodaje pseudo-element przed każdym div elementu, który jest w sąsiedztwie rodzeństwo innego elementu div:

div { 
    display: inline-block; 
    position: relative; 
} 

div + div { 
    padding-left: 0.3em; 
} 

div + div::before { 
    content: ''; 
    border-left: 2px solid #000; 
    position: absolute; 
    height: 50%; 
    left: 0; 
    top: 25%; 
} 

JS Fiddle demo.

+1

skrzypce upadł AWOL – Neil

+0

lepiej używać: po –

+1

@scott: prawda, tylko dlatego, że nie były pierwotnie wykorzystywane jest, bo nie sądzę, bym był świadomy z pseudo-elementów ':: before' lub' :: after'. Spróbuję i poprawię ten pomysł, gdy wrócę do komputera, a nie telefonu komórkowego. –

0

Chcę kontrolować wysokość granicy. Jak mogłem to zrobić?

Nie możesz. Granice CSS będą zawsze rozciągać się na całej wysokości/szerokości elementu.

Jednym ze sposobów obejścia tego problemu byłoby użycie pozycjonowania bezwzględnego (które może akceptować wartości procentowe) w celu umieszczenia elementu niosącego obramowanie wewnątrz jednego z dwóch elementów div. W tym celu musisz utworzyć element position: relative.

1

nie jest zły .. ale spróbuj tego ... (powinien działa dla wszystkich, ale ist tylko -webkit włączone)

<br> 
<input type="text" style=" 
    background: transparent; 
border-bottom: 1px solid #B5D5FF; 
border-left: 1px solid; 
border-right: 1px solid; 
border-left-color: #B5D5FF; 
border-image: -webkit-linear-gradient(top, #fff 50%, #B5D5FF 0%) 1 repeat; 
"> 

// Zapraszam do edycji i dodać wszystkie inne przeglądarki ..

8

Tylko używając line-height

line-height: 10px; 

enter image description here

1

Po prostu szukałem tego ...Korzystając z odpowiedzi Davida, użyłem przęsła i nadałem mu trochę wypełnienia (wysokość nie zadziała + problem z górnym marginesem) ... Działa jak urok;

Zobacz fiddle

<ul> 
    <li><a href="index.php">Home</a></li><span class="divider"></span> 
    <li><a href="about.php">About Us</a></li><span class="divider"></span> 
    <li><a href="#">Events</a></li><span class="divider"></span> 
    <li><a href="#">Forum</a></li><span class="divider"></span> 
    <li><a href="#">Contact</a></li> 
</ul> 

.divider { 
    border-left: 1px solid #8e1537; 
    padding: 29px 0 24px 0; 
}