Szerokość div to 200px, więc border-bottom to również 200px, ale co mam zrobić, jeśli chcę, żeby border-bottom miał tylko 100px bez zmiany szerokości div?
div {width:200px;height:50px;position: relative;z-index:1;background:#eee;}div:before {content:"";position: absolute;left:0;bottom:0;height:1px;width:50%;/* or 100px */border-bottom:1px solid magenta;}
To też była moja technika, ale zauważ, że da ona granicę na lewej połowie div. Jeśli chcesz, aby był wyśrodkowany, podaj plik div:beforeleft: 50px.
Chowlett,
Pytanie nie określa, w której pozycji powinna pojawić się granica, więc nie rozważałem innych pozycji
Fabrizio Calderan,
5
jeśli szerokość dolnej granicy wynosi 50%, a chcesz to skoncentrowane, potrzeb stylu być left: 25%ponieważ będzie to 25% + 50% + 25%
skift
5
Tak, wiem, że w tym przykładzie działa. Ale dla innych, którzy robią coś podobnego, co może próbować sprawić, że będzie responsywny, może być konieczne użycie%, tak jak wtedy, gdy potrzebowałem odpowiedzi.
skift
4
Zastosowanie margin: auto, right: 0, left: 0az :beforecentrum linii. Głosuj za, jeśli ci to pomogło.
Ale_info
40
Innym sposobem na zrobienie tego (w nowoczesnych przeglądarkach) jest użycie ujemnego rozszerzonego cienia pola. Sprawdź to zaktualizowane skrzypce: http://jsfiddle.net/WuZat/290/
box-shadow:0px24px3px-24px magenta;
Myślę jednak, że najbezpieczniejszym i najbardziej zgodnym sposobem jest zaakceptowana powyżej odpowiedź. Pomyślałem, że podzielę się inną techniką.
Nie możesz mieć obramowania innego rozmiaru niż sam element DIV.
rozwiązaniem byłoby po prostu dodanie kolejnego elementu DIV pod równym, wyśrodkowanym lub bezwzględnym, z żądaną ramką 1 piksela i wysokością tylko 1 piksela.
Zostawiłem oryginalne obramowanie, abyś mógł zobaczyć szerokość, i mam dwa przykłady - jeden o szerokości 100, a drugi o szerokości 100 pośrodku. Usuń ten, którego nie chcesz używać.
Spóźniony na imprezę, ale dla każdego, kto chce zrobić 2 obramowania (na dole i po prawej w moim przypadku) możesz użyć techniki w zaakceptowanej odpowiedzi i dodać: after psuedo-element dla drugiej linii, a następnie po prostu zmień właściwości takie jak więc:
http://jsfiddle.net/oeaL9fsm/
Zrobiłem coś takiego w swoim projekcie. Chciałbym się nim tutaj podzielić. Możesz dodać kolejny element div jako dziecko i nadać mu ramkę o małej szerokości i umieścić go po lewej, środku lub prawej stronie za pomocą zwykłego CSS
Obramowanie zawiera cały element HTML. Jeśli chcesz mieć połowę dolnej krawędzi, możesz owinąć ją innym identyfikowalnym blokiem, takim jak rozpiętość.
Właśnie wykonałem odwrotność tego użycia :afteri ::afterponieważ musiałem poszerzyć dolną granicę 1.3rem:
Mój żywioł, ale bardzo zdeformowany, kiedy używany :beforei :afterw tym samym czasie, ponieważ elementy są ustawione poziomo z display: flex, flex-direction: rowi align-items: center.
Możesz użyć tego do zrobienia czegoś szerszego lub węższego, lub prawdopodobnie dowolnych modyfikacji wymiarów matematycznych:
a.nav_link-active {
color: $e1-red;
margin-top:3.7rem;}
a.nav_link-active:visited {
color: $e1-red;}
a.nav_link-active:after {
content:'';
margin-top:3.3rem;// margin and height should
height:0.4rem;// add up to active link margin
background: $e1-red;
margin-left:-$nav-spacer-margin;
display: block;}
a.nav_link-active::after {
content:'';
margin-top:3.3rem;// margin and height should
height:0.4rem;// add up to active link margin
background: $e1-red;
margin-right:-$nav-spacer-margin;
display: block;}
Przepraszamy, to jest SCSS, po prostu pomnóż liczby przez 10 i zmień zmienne na jakieś normalne wartości.
div:before
left: 50px
.left: 25%
ponieważ będzie to 25% + 50% + 25%margin: auto
,right: 0
,left: 0
az:before
centrum linii. Głosuj za, jeśli ci to pomogło.Innym sposobem na zrobienie tego (w nowoczesnych przeglądarkach) jest użycie ujemnego rozszerzonego cienia pola. Sprawdź to zaktualizowane skrzypce: http://jsfiddle.net/WuZat/290/
Myślę jednak, że najbezpieczniejszym i najbardziej zgodnym sposobem jest zaakceptowana powyżej odpowiedź. Pomyślałem, że podzielę się inną techniką.
źródło
Możesz użyć gradientu liniowego:
źródło
Dodałem linię pod tagiem h3 w ten sposób
źródło
Nie możesz mieć obramowania innego rozmiaru niż sam element DIV.
rozwiązaniem byłoby po prostu dodanie kolejnego elementu DIV pod równym, wyśrodkowanym lub bezwzględnym, z żądaną ramką 1 piksela i wysokością tylko 1 piksela.
http://jsfiddle.net/WuZat/3/
Zostawiłem oryginalne obramowanie, abyś mógł zobaczyć szerokość, i mam dwa przykłady - jeden o szerokości 100, a drugi o szerokości 100 pośrodku. Usuń ten, którego nie chcesz używać.
źródło
Spóźniony na imprezę, ale dla każdego, kto chce zrobić 2 obramowania (na dole i po prawej w moim przypadku) możesz użyć techniki w zaakceptowanej odpowiedzi i dodać: after psuedo-element dla drugiej linii, a następnie po prostu zmień właściwości takie jak więc: http://jsfiddle.net/oeaL9fsm/
źródło
Mam przypadek, aby mieć jakieś dolne obramowanie między obrazami w kontenerze div, a najlepszy był kod jednej linii - border-bottom-style: inset;
źródło
źródło
Zrobiłem coś takiego w swoim projekcie. Chciałbym się nim tutaj podzielić. Możesz dodać kolejny element div jako dziecko i nadać mu ramkę o małej szerokości i umieścić go po lewej, środku lub prawej stronie za pomocą zwykłego CSS
Kod HTML:
CSS, jak poniżej:
źródło
Obramowanie zawiera cały element HTML. Jeśli chcesz mieć połowę dolnej krawędzi, możesz owinąć ją innym identyfikowalnym blokiem, takim jak rozpiętość.
Kod HTML:
CSS, jak poniżej:
źródło
To pomoże:
http://www.w3schools.com/tags/att_hr_width.asp
Tworzy to poziomą linię o szerokości 50%, musisz utworzyć / zmodyfikować klasę, jeśli chcesz edytować styl.
źródło
Właśnie wykonałem odwrotność tego użycia
:after
i::after
ponieważ musiałem poszerzyć dolną granicę1.3rem
:Mój żywioł, ale bardzo zdeformowany, kiedy używany
:before
i:after
w tym samym czasie, ponieważ elementy są ustawione poziomo zdisplay: flex
,flex-direction: row
ialign-items: center
.Możesz użyć tego do zrobienia czegoś szerszego lub węższego, lub prawdopodobnie dowolnych modyfikacji wymiarów matematycznych:
Przepraszamy, to jest
SCSS
, po prostu pomnóż liczby przez 10 i zmień zmienne na jakieś normalne wartości.źródło