CSS для центрирования всего относительного тела по горизонтали, без обертки или полос прокрутки?

Какой CSS будет центрировать все относительно расположенное тело веб-страницы ЛЮБЫЕ, без полос прокрутки и с одинаковым отсечением содержимого переполнения слева и справа от области просмотра?

Когда страница отображается, если самый широкий элемент шире области просмотра, тогда я хочу, чтобы левая и правая стороны содержимого «отваливались» от сторон экрана. Переполнение как слева, так и справа должно быть обрезано/спрятано.

Ширина содержимого непредсказуема и часто может быть шире области просмотра. Мы всегда должны видеть средний фрагмент, без полос прокрутки.

Не повторяющийся вопрос

Пожалуйста, не отмечайте "дублировать". Никакой ответ на эти вопросы не достигает моей желаемой цели. Я протестировал каждый из них.

Как выровнять все тело html по центру?

align body to center - центрирование тела

Как центрировать тело на странице?

В отличие от обычных ответов на приведенные выше вопросы, у меня есть нет возможность обернуть содержимое в div. Я могу работать только с тегами html и body.

Требуемый HTML:

Этот вопрос не позволяет изменить этот html. Ваш ответ CSS должен работать с веб-страницей Любые. Эти элементы являются лишь примерами — в html может быть гораздо больше непредсказуемых элементов. Вы не можете обернуть содержимое в контейнер div. Ваш ответ CSS должен отображать центральную часть страницы, обрезая слева и справа любой контент, который не помещается на экране.

<html>    
    <body>
        Overflow to left
        <div id = "wider">Center-screen</div>
    </body>    
</html>

Требуемый CSS

#wider {
    width: 10000px;
    border: 1px solid black;
    text-align: center;
}

body {
    position: relative;
}

Вы не можете изменить этот CSS, только добавьте новый CSS. Нужен position:relative на теле.

Элемент #wider — это просто пример широкого контента. Реальное использование будет включать гораздо больше элементов непредсказуемой ширины.

Вывод должен отображать что-то вроде изображения ниже, без полос прокрутки. Текст «Переполнение слева» должен быть обрезан за пределы экрана слева. Слова «Центр экрана» должны располагаться точно по центру по горизонтали.

Нерабочее решение 1:

Ответ ниже, из аналогичного вопроса, не достигает моей цели:

html,
body {
  height: 100%;
}

html {
  display: table;
  width: 100%;
}

body {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}

Нерабочее решение 2:

Другой ответ на аналогичный вопрос, похоже, не работает для моего сценария:

body {
  width: 80%;
  margin-left: auto;
  margin-right: auto;
}

Рабочий пример:

Эта рабочий пример содержит мой HTML вместе с приведенным выше неудачным ответом. Не стесняйтесь проверить свой ответ в этой скрипке.

Желаемый вывод из HTML выше:

CSS для центрирования всего относительного тела по горизонтали, без обертки или полос прокрутки?

Джонни, но почему?

m4n0 22.07.2019 10:26
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
1
1 370
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Если я вас правильно понял, вы могли бы сделать что-то вроде этого:

body {
  overflow-x: hidden;
}

#wider {
  width: 10000px;
  border: 1px solid black;
  text-align: center;
  position: relative;
  left: 50%;
  transform: translate(-50%);
}
Overflow to left
<div id = "wider">Center-screen
</div>

Спасибо, но это просто выравнивает все по левому краю и показывает полосу прокрутки по горизонтали.

johny why 22.07.2019 11:11

Упс, я неправильно истолковал CSS как часть требуемого кода. В любом случае, не могли бы вы сделать грубую картину того, чего вы пытаетесь достичь?

krimaeus 22.07.2019 11:20

картинка добавлена ​​к вопросу

johny why 22.07.2019 11:29

Итак, в чем смысл части «Переполнение слева»? Потому что, если бы его не было, было бы легко центрировать этот огромный div, а скрытие полос прокрутки — это просто установка overflow-x в теле на hidden.

krimaeus 22.07.2019 11:35

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

johny why 22.07.2019 11:37

Это то, что мой ответ уже делает. Чего я не понимаю, так это того, какова цель «Переполнения влево» и что это должно представлять. Потому что, если вы хотите, чтобы он был обрезан, вам нужно поместить его в свой div и выровнять по левому краю.

krimaeus 22.07.2019 11:43

Добавлено к вопросу: этот вопрос не позволяет изменять этот CSS. Вы можете добавить только новый CSS. Этот элемент является просто примером широкого содержания. Реальное использование будет включать гораздо больше элементов непредсказуемой ширины.

johny why 22.07.2019 11:47

забыл сказать, нужно положение: относительно тела.

johny why 22.07.2019 21:53

Чтобы добиться горизонтального центрирования тела, вам нужно будет использовать элементы внутри div с такими свойствами: «flex-center flex-column»,

<h5 class = "animated fadeIn mb-3">Hello Mate.</h5>

<p class = "animated fadeIn text-muted">Mostafa Harb</p>

Привет товарищ. Я не могу использовать обертку/контейнер. Можно использовать только теги HTML и body. Я не вижу ваш CSS.

johny why 22.07.2019 11:12

то, что вы можете сделать, это задать div шириной 100% и некоторой высотой, а затем поместить div в этот div и задать стиль float:center; и это все должно идти идеально с вами.

Lord Legolas 22.07.2019 11:18

или вы можете сделать во всем div эти свойства стиля: align-items:center;align-contents:center;justify-items:cente‌​r;align-items:center‌​; и это также может делать то, что вы хотите.

Lord Legolas 22.07.2019 11:20

<html> <style> .entire-div{ text-align: center; выровнять элементы: по центру; выровнять содержимое: центр; выравнивание-элементы: центр; выровнять элементы: по центру; } </style> <body> <div class = "entire-div"> <h1>Привет</h1> </div> </body> </html>

Lord Legolas 22.07.2019 11:30

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

johny why 22.07.2019 11:31

эти свойства - это то, что вы хотите достичь своей цели:

<html>
<style>
.entire-div{
    text-align: center;
    align-items:center;
    align-content:center;
    justify-items:center;
    align-items:center;
}
</style>
<body>
    <div class = "entire-div">
        <h1>Hello</h1>
    </div>
</body>
</html>

Спасибо, но, как я уже упоминал в вопросе, я не могу использовать контейнерный div, как вы делаете в этом ответе, ваш «.entire-div». Кроме того, вы все еще не используете мой необходимый HTML :) Пожалуйста, проверьте вопрос, спасибо.

johny why 22.07.2019 11:39

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

Lord Legolas 22.07.2019 11:47

Этот вопрос не позволяет изменить мой HTML или CSS. Вы можете добавить только новый CSS. Элементы в моем HTML — это просто примеры широкого контента. Реальное использование будет включать гораздо больше элементов непредсказуемой ширины.

johny why 22.07.2019 11:50

забыл сказать, нужно положение: относительно тела.

johny why 22.07.2019 21:53

Вы просто добавляете центр выравнивания текста в код CSS

HTML

<html>
  <body>
  Overflow to left
    <div id = "wider">Center-screen</div>
  </body>
</html>

css

#wider{
  text-align:center;
}

Как упоминалось в вопросе, вы не можете изменить этот конкретный CSS. Единственный CSS, который вы можете изменить, это <html> и <body>. Мой элемент #wider — это всего лишь пример — я ищу CSS, который будет работать с ЛЮБЫМ веб-сайтом. -Спасибо

johny why 22.07.2019 13:41

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

Ranjith v 22.07.2019 13:50
Ответ принят как подходящий

Вам просто нужно абсолютное позиционирование + преобразование: центрирование стиля перевода.

#wider {
  width: 10000px;
  border: 1px solid black;
  text-align: center;
}

body {
  position:absolute;
  left:50%;
  transform: translate(-50%);
  margin:0;
  overflow-x:hidden;
}
<html>
  <body>
  Overflow to left
    <div id = "wider">Center-screen</div>
  </body>
</html>

Прекрасная работа! Ты победил! Великолепно! Однако .... я сделал ошибку. Мне нужно, чтобы мое тело было position:relative. Я забыл указать это в вопросе. Виноват! :( Можете решить? Можете вставить CSS в <html>?

johny why 22.07.2019 15:35

Да, вместо этого вы можете переместить CSS решения в элемент html. Это может зависеть от того, почему вам нужно, чтобы тело было position:relative.

Alohci 22.07.2019 17:09

Когда я сказал «поместите CSS в <html>», я имел в виду «Можете ли вы придумать какой-нибудь CSS, который можно применить к тегу HTML, чтобы решить мой вопрос?»

johny why 22.07.2019 21:46

К сожалению, невозможно удалить требование для позиции: относительно тела.

johny why 22.07.2019 21:52

Да я понял ваш вопрос. Тот же CSS, который я показал для элемента body, можно применить к элементу html вместо этого (за исключением margin:0, который все еще должен применяться к телу), и вы получите тот же результат. Затем к элементу body можно применить position:relative по вашему желанию.

Alohci 23.07.2019 01:48

Было бы здорово добавить ваш последний комментарий к ответу.

johny why 30.07.2019 03:04

Другие вопросы по теме