LINUX.ORG.RU

Вертикальное центрирование элемента произвольной высоты

 , , ,


0

1

Месяц назад решил сделать сабж без JS, на одном только CSS.
Использовал этот метод:

.element {
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

Получилось плохо. Всё хорошо, пока я не добавляю вертикальный margin.
И ещё если утянуть элемент списка курсором, то он утянется из своего места до применения фильтра. Как-то это неправильно.

★★★★★

flexbox можно использовать. Там можно.

Лучше не менять курсор для ссылок, тем более на обычную стрелочку. Это сбивает пользователя.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Браузеры получили быструю поддержку Flexbox. Chrome 22+, Opera 12.1+, IE10, Firefox >=16 уже поддерживают Flexbox.

Другими средствами всё равно не получится хорошо. Либо JS, либо нужно знать высоту элемента и использовать отрицательный margin. Либо таблицей.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Высота родительского не поможет. Надо дочернего. Если неизвестна, то flexbox, либо таблица (не обязательно прям <table>, можно на css же), либо JS

Psych218 ★★★★★
()
Ответ на: комментарий от CYB3R

Все там подходит, смотри внимательнее.

#left {
  padding-left: .33em;
}

#left:before {
  content: "";
  display: inline-block;
  margin-right: -.33em;
  height: 100%;
  vertical-align: middle;
}

#left ul {
  width: 100%;
  display: inline-block;
  vertical-align: middle;
}
Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Сейчас попробовал Opera 12, Chrome 19, Firefox 18, Safari 5.1 и встроенный браузер Android 4.1. Моим тестом ни один из этих браузеров не признан современным.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Ты пробовал в IE открывать?

Конкретно это говно не будет работать конечно. У тебя используется куча современных фич, которые просто не нужны при таком простом дизайне и вполне можно обойтись без них ничего не потеряв.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

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

Сделать ресайз по событиям на джаваскрипте? Или вообще SVG?

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Сделать ресайз по событиям на джаваскрипте? Или вообще SVG?

Какой ресайз? О чем речь?

Кстати масштабирование на твоей странице не работает совсем - очень плохо.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Оно и не должно. Окно браузера ресайзи.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от Black_Roland

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

Да тут половина не то что не потеряв, а вредны. Зачем, например, отключать выделение? Зачем отключать смену курсора на ссылках? Это неудобно. Непривычно пользователю.

Psych218 ★★★★★
()
Ответ на: комментарий от Psych218

Зачем, например, отключать выделение?

Не хочу, чтобы можно было выделять текст. Сначала я делал цвет выделения прозрачным, но теперь решил отключить полностью.

Зачем отключать смену курсора на ссылках?

Вот про это я забыл. Это я боролся с I-курсором над текстом. Поправил.

Что ещё там не на месте?

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Не хочу, чтобы можно было выделять текст.

Хорошо, что ты делаешь только никому не интересный хоумпейдж, а не сайт, который реально кто-то будет посещать…

Psych218 ★★★★★
()
Ответ на: комментарий от Psych218

Если бы там был текст, который нужно было бы выделять и копировать, естественно его можно было бы выделять и курсор бы был другой.

CYB3R ★★★★★
() автор топика

Если кому надо: стиль для Stylish против таких вот любителей (у меня глобальным):

* {
    -moz-user-select: auto !important;
}
Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)

Хотел спросить ПОЧЕМУ,почему,ПОЧЕМУ

ФФ досихпор
вешается от

while(true);

почему

сори пригорел

anonymous
()
Ответ на: комментарий от CYB3R

Если тебе не нужна поддержка устаревших версий браузеров (и IE) то флексы уже можно использовать. Для бложика сойдёт.
Только имей в виду, есть два или три распространённых варианта этого стандарта. В своё время пейсатели IE поспешили и реализовали у себя какой-то черновик.

MrClon ★★★★★
()
<!doctype html>
<style>
html,
body,
body:before {
	height: 100%;
}
body {
	text-align: center;
}
body:before {
	content: '';
}
body:before,
.centered {
	display: inline-block;
	vertical-align: middle;
}
</style>
<div class="centered">
	<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Bonsai_IMG_6407.jpg/220px-Bonsai_IMG_6407.jpg">
</div>
Boba_Fett
()
Ответ на: комментарий от anonymous

столкнулся в лоб лоб с проблемами IE ...

anonymous
()

Попробуй дополнительно обернуть элемент и использовать line-height. Выровнять по центру можно использовав margin: 0 auto, например.

wrangler
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.