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;}
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.
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.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
div:beforeleft: 50px.