Czy istnieje sposób na ograniczenie długości granicy? Mam <div>
ramkę z dolną ramką, ale chcę dodać ramkę po lewej stronie, <div>
która rozciąga się tylko w połowie wysokości.
Czy można to zrobić bez dodawania dodatkowych elementów na stronie?
Mam nadzieję że to pomoże:
#mainDiv {
height: 100px;
width: 80px;
position: relative;
border-bottom: 2px solid #f51c40;
background: #3beadc;
}
#borderLeft {
border-left: 2px solid #f51c40;
position: absolute;
top: 50%;
bottom: 0;
}
<div id="mainDiv">
<div id="borderLeft"></div>
</div>
Treści generowane przez CSS mogą rozwiązać ten problem:
(uwaga -
content: "";
deklaracja jest niezbędna do renderowania pseudoelementu)źródło
Te
:after
skały :)Jeśli grasz trochę, możesz nawet ustawić element granicy o zmienionym rozmiarze, aby był wyśrodkowany lub pojawiał się tylko wtedy, gdy obok niego znajduje się inny element (jak w menu). Oto przykład z menu:
Pokaż fragment kodu
źródło
Możemy jednak naśladować efekt graniczny i kontrolować go,
width
a takżeheight
w inny sposób.Z CSS (gradient liniowy):
Możemy użyć
linear-gradient()
do stworzenia obrazu tła i kontrolować jego rozmiar i położenie za pomocą CSS, aby wyglądał jak obramowanie. Ponieważ możemy zastosować wiele obrazów tła do elementu, możemy użyć tej funkcji, aby utworzyć wiele obrazów podobnych do ramek i zastosować na różnych stronach elementu. Możemy również pokryć pozostały dostępny obszar pewnym kolorem, gradientem lub obrazem tła.Wymagany HTML:
Wszystko, czego potrzebujemy, to tylko jeden element (prawdopodobnie posiadający pewną klasę).
Kroki:
linear-gradient()
.background-size
aby dopasowaćwidth
/height
powyżej utworzonych obrazów, aby wyglądały jak obramowanie.background-position
do regulacji położenia (jakleft
,right
,left bottom
etc.) z wyżej utworzonego granicznej (s).Niezbędny CSS:
Przykłady:
Dzięki
linear-gradient()
możemy tworzyć granice jednolitego koloru, a także mieć gradienty. Poniżej znajduje się kilka przykładów obramowania utworzonego tą metodą.Przykład z ramką zastosowaną tylko z jednej strony:
Pokaż fragment kodu
Przykład z obrzeżem zastosowanym po obu stronach:
Pokaż fragment kodu
Przykład z obramowaniem zastosowanym ze wszystkich stron:
Pokaż fragment kodu
Zrzut ekranu:
źródło
dla linii poziomych możesz użyć znacznika hr:
ale nie można ograniczyć wysokości granicy. tylko wysokość elementu.
źródło
height
. Do zamiany obramowania komórki użyj znacznika TD<td>your content<hr/></td>
.Granice są definiowane tylko dla każdej strony, a nie ułamki strony. Nie możesz tego zrobić.
Ponadto nowy element również nie byłby granicą, naśladowałby tylko pożądane zachowanie - ale nadal byłby elementem.
źródło
Innym sposobem na to jest użycie obrazu obramowania w połączeniu z gradientem liniowym.
jsfiddle: https://jsfiddle.net/u7zq0amc/1/
Obsługa przeglądarki: IE: 11+
Chrome: wszystkie
Firefox: 15+
Aby uzyskać lepszą obsługę, dodaj także prefiksy dostawcy.
obraz granicy obramowania
źródło
To sztuczka CSS, a nie formalne rozwiązanie. Kod zostawiam z czarną kropką, ponieważ pomaga mi ustawić element. Następnie pokoloruj treść (kolor: biały) i (margines u góry: około -5px lub więcej), aby nie było okresu.
źródło
Innym rozwiązaniem jest użycie obrazu tła do naśladowania wyglądu lewej ramki
Być może trzeba będzie dostosować do IE (jak zwykle), ale warto spróbować, jeśli to jest projekt, którego szukasz.
źródło
Możesz zdefiniować tylko jedną ramkę na stronę. Musisz do tego dodać dodatkowy element!
źródło