Поместить фоновое изображение CSS на x пикселей справа? - PullRequest
303 голосов
/ 07 июля 2010

Я думаю, что ответ - нет, но вы можете расположить фоновое изображение с помощью CSS, чтобы оно было фиксированным количеством пикселей от правого?

Если я установил background-position значения x иу, кажется, они дают только фиксированные корректировки пикселей слева и сверху соответственно.

Ответы [ 21 ]

441 голосов
/ 05 июля 2012
background-position: right 30px center;

Работает в большинстве браузеров.См .: http://caniuse.com/#feat=css-background-offsets для полного списка.

Дополнительная информация: http://www.w3.org/TR/css3-background/#the-background-position

92 голосов
/ 06 ноября 2012

Можно использовать атрибут border как длину справа

background: url('/img.png') no-repeat right center;
border-right: 10px solid transparent;
63 голосов
/ 09 июня 2013

Существует один способ, но он не поддерживается во всех браузерах (см. покрытие здесь )

element {
  background-position : calc(100% - 10px) 0;
}

Он работает в каждом современном браузере, , но вполне возможно, что IE9 дает сбой . Также нет покрытия для =

33 голосов
/ 07 июля 2010

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

  • Убедитесь, что фоновое изображение соответствует размеру контейнера (по крайней мере, по ширине) и установите background-repeat: repeat или repeat-x, если выравнивается только ширина. Затем, чтобы что-то появилось x пикселей справа, просто, как background-position: -5px 0px.
  • Использование процентов для background-position демонстрирует особое поведение, которое лучше видно, чем описано здесь. Дать ему шанс. По сути, background-position: 90% 50% сделает правый край фонового изображения на расстоянии 10% от правого края контейнера.
  • Создать div, содержащий изображение. Явно установите положение содержащего элемента position: relative, если он еще не установлен. Установите контейнер изображения на position: absolute; right: 10px; top: 10px;, очевидно, корректируя последние два по своему усмотрению. Поместите контейнер div с изображением в содержащий элемент.
22 голосов
/ 16 января 2012

Попробуйте:

#myelement {
  background-position: 100% 50%;
  margin-right: 5px;
}

Обратите внимание, что приведенный выше код переместит весь элемент (не только фоновое изображение) на 5 пикселей вправо.Это может быть хорошо для вашего случая.

21 голосов
/ 09 августа 2013

Вы можете сделать это в CSS3:

background-position: right 20px bottom 20px;

Работает в Firefox, Chrome, IE9 +

Источник: MDN

8 голосов
/ 06 июля 2012

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

Обходной путь для того же изображения - создать изображение в формате PNG или GIF (форматы файлов изображений, поддерживающие прозрачность), у которого прозрачная часть справа от изображения точно равна числу пикселей, которым вы хотите дать право. поле (например: 5px, 10px и т. д.)

Это хорошо работает одинаково для фиксированной ширины, а также ширины в процентах. Практически хорошее решение для заголовков аккордеона, имеющих изображение со стрелкой плюс / минус или вверх / вниз справа от заголовка!

Недостатки: К сожалению, вы не можете использовать JPG, если фоновая часть контейнера и цвет фона фонового изображения CSS не имеют одинаковый плоский цвет (без градиента / виньетки), в основном белый / черный и т. Д. *

7 голосов
/ 03 июля 2013

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

.container:after{
    content:"";
    position:absolute;
    right:20px;
    background:url(http://lorempixel.com/400/200) no-repeat right bottom;
}

этот css поместит фон справа внизуугол элемента ".container" с пробелом 20 пикселей справа.

См. эту скрипку, например, http://jsfiddle.net/h6K9z/226/

5 голосов
/ 06 августа 2013

Наиболее подходящий ответ - это новый синтаксис с четырьмя значениями для background-position, но пока все браузеры не поддержат его ваш лучший подход - это сочетание предыдущих ответов в следующем порядке :

background: url(image.png) no-repeat 97% center; /* default, Android, Sf < 6 */
background-position: -webkit-calc(100% - 10px) center; /* Sf 6 */
background-position: right 10px center; /* Cr 25+, FF 13+, IE 9+, Op 10.5+ */
4 голосов
/ 12 декабря 2013

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

background: url(http://goo.gl/P93P5Q) center right 10px no-repeat;

Поработав в инспекторе, я пришел к этому кросс-браузерному решению, которое работает в IE8 +, Chrome, Firefox и Safari, а также в адаптивных проектах.

background: url(http://goo.gl/P93P5Q) no-repeat 95% center;

Вот кодекс того, как это выглядит и работает.Codepen написан с использованием SCSS - http://cdpn.io/xqGbk

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