Как стилизовать фоновое изображение и наложить содержимое выше - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь установить фоновое изображение НЕ используя CSS.Как я могу установить его в HTML-документе, когда содержимое отображается поверх изображения?

Я хочу, чтобы изображение реагировало на изменение ширины браузера.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Rapid Weather</title>
    <link rel = "stylesheet" href = "style.css" />
  </head>
  <body>
      <img src="images/sunny.png" alt="sunny picture" class="img">
    <section id = "weather-wrapper" class = "container-fluid">
      <div class="row">
        <div class="col-md-6 col-md-offset-3">
          <div id = "weather-info">
            <span id = "temperature"></span><span id="unit">&#176;C</span><br><br>
            <p id = "city"></p>
            <p id = "climate"></p>
            <img id = "icon" />
          </div>
          <div id="error-info">
            <h1><span class="fa fa-warning"></span><span id="err-msg"> City not found</span></h1>
          </div>
        </div>
      </div>
    </section>


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src = "script.js"></script>
  </body>
</html>

Когда я установил изображение, теперь содержимое находится под изображением, и я не могу заставить изображение идти позадиотображение сценария.Я не могу использовать селектор тела в CSS, потому что он изменяет остальную часть отображаемого содержимого.

@import url('https://fonts.googleapis.com/css?family=Anton|Mogra|Lobster|Josefin+Sans');

body {
    color: #ffffff;
}

img {
    max-height: 100%;
    max-width: 100%;
}
a {
  text-decoration: none;
  color: #616161;
  transition: linear 0.3s;
}

a:hover {
  text-decoration: none;
  color: #fafafa;
}

#weather-wrapper, #error-info {
  transform: translateY(80px);
  text-align: center;
}

#temperature-wrapper {
  border: solid 1px #212121;
  border-radius: 100%;
}

#error-info, #weather-info {
  display: none;
}

#title {
  font-size: 55px;
  font-family: 'Lobster', cursive;
}

#search, #weather-info {
  margin-top: 40px;
}

#city, #temperature, #search input, #unit, #climate, #err-msg {
    font-family: 'Josefin Sans', sans-serif;
}

#city, #climate {
  font-size: 25px;
  text-transform: capitalize;
}

#temperature,  #unit {
  font-size: 40px;
}

#search {
  position: relative;
}

#search input {
  text-indent: 30px;
  height: 50px !important;
  border-radius: 0;
  font-size: 20px;
  color: #000000;
}

#search .fa-search {
  color: grey;
  position: absolute;
  top: 17px;
  left: 17px;
  font-size: 15px;
}

#unit {
  transition: linear 0.2s;
}
#unit:hover {
  cursor: pointer;
  color: #ff4436;
}

Ответы [ 3 ]

0 голосов
/ 07 мая 2019

Чтобы отцентрировать его, посмотрите здесь: CSS Styling Images

Чтобы изображение было в фоновом режиме, вы можете дать положительный z-индекс другим элементам.Это может сработать.

0 голосов
/ 07 мая 2019

Я не уверен, почему вы возражаете против использования CSS для фонового изображения. Это не только решит проблему, но и позволит вам масштабировать фоновое изображение так, чтобы оно всегда идеально подходило для всех размеров области просмотра (см .: https://css -tricks.com / perfect-full-page-background-image-image / )

Однако, поскольку вы указали решение не-css для фона, посмотрите следующий пример, где я абсолютно позиционировал #weather-wrapper.

body {
  color: #ffffff;
  margin: 0;
}

#weather-wrapper {
  position: absolute;
  background: rgba(255, 0, 0, 0.2);
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  width: 80%;
  height: 80%;
  margin: auto;
  border: 10px solid red;
  text-align: center;
}
<img src="https://baconmockup.com/800/800" alt="placeholder" class="img" width="100%">
<section id="weather-wrapper" class="container-fluid">
  This element is positioned absolutely
</section>

Предполагая, что вы можете преодолеть предложение без CSS, вы можете просто сделать это следующим образом. Установив background-image в атрибуте style html (чтобы его можно было установить динамически / для каждой страницы) и оставив остальные стили, необходимые для того, чтобы сделать этот отзывчивый фон разделенным на таблицу стилей. EG:

html { 
  background-repeat:no-repeat;
  background-position:center center;
  background-attachment: fixed;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

body {
    color: #ffffff;
}

#weather-wrapper {
/* temp styles so we can see this elemennt in the snippet */
border:10px solid red;
}
<!DOCTYPE html>
<html lang="en" style="background-image:url('https://baconmockup.com/600/800')">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Rapid Weather</title>
    <link rel = "stylesheet" href = "style.css" />
  </head>
  <body>
    <section id = "weather-wrapper" class = "container-fluid">
      <div class="row">
        <div class="col-md-6 col-md-offset-3">
          <div id = "weather-info">
            <span id = "temperature"></span><span id="unit">&#176;C</span><br><br>
            <p id = "city"></p>
            <p id = "climate"></p>
            <img id = "icon" />
          </div>
          <div id="error-info">
            <h1><span class="fa fa-warning"></span><span id="err-msg"> City not found</span></h1>
          </div>
        </div>
      </div>
    </section>


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src = "script.js"></script>
  </body>
</html>
0 голосов
/ 07 мая 2019

Быстро и грязно

Добавьте атрибут id="bg-image" к рассматриваемому тегу img и примените следующий CSS:

img#bg-image {
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

Важной частью является то, что #bg-image назначено свойство position, поскольку z-index применяется только к элементам, для которых установлен position.

Правильный путь

Вам следует либо установить атрибут background-image для контейнера через JS, либо динамически добавить class к элементу контейнера через JS. Т.е .:

<section id="weather-wrapper" class="container-fluid"> станет <section id="weather-wrapper" class="container-fluid sunny">), если в данном месте солнечно. Фоновое изображение будет предварительно определено в CSS соответственно, т.е.

#weather-wrapper.sunny {
    background-image: url(images/sunny.png);
}

#weather-wrapper.rainy {
    background-image: url(images/rainy.png);
}

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