У меня может быть несколько фоновых изображений с помощью CSS?

Я написал эту небольшую функцию несколько лет назад:

function sqlvprintf($query, $args)
{
    global $DB_LINK;
    $ctr = 0;
    ensureConnection(); // Connect to database if not connected already.
    $values = array();
    foreach ($args as $value)
    {
        if (is_string($value))
        {
            $value = "'" . mysqli_real_escape_string($DB_LINK, $value) . "'";
        }
        else if (is_null($value))
        {
            $value = 'NULL';
        }
        else if (!is_int($value) && !is_float($value))
        {
            die('Only numeric, string, array and NULL arguments allowed in a query. Argument '.($ctr+1).' is not a basic type, it\'s type is '. gettype($value). '.');
        }
        $values[] = $value;
        $ctr++;
    }
    $query = preg_replace_callback(
        '/{(\\d+)}/', 
        function($match) use ($values)
        {
            if (isset($values[$match[1]]))
            {
                return $values[$match[1]];
            }
            else
            {
                return $match[0];
            }
        },
        $query
    );
    return $query;
}

function runEscapedQuery($preparedQuery /*, ...*/)
{
    $params = array_slice(func_get_args(), 1);
    $results = runQuery(sqlvprintf($preparedQuery, $params)); // Run query and fetch results.   
    return $results;
}

Это позволяет запускать операторы в однострочном C # -ish String.Format, например:

runEscapedQuery("INSERT INTO Whatever (id, foo, bar) VALUES ({0}, {1}, {2})", $numericVar, $stringVar1, $stringVar2);

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

ОБНОВЛЕНИЕ БЕЗОПАСНОСТИ: предыдущая версия str_replace разрешала инъекции, добавляя токены {#} в пользовательские данные. Эта версия preg_replace_callback не вызывает проблем, если замена содержит эти токены.

316
задан Brock Adams 25 September 2013 в 13:12
поделиться

3 ответа

CSS3 позволяет этот вид вещи, и это похоже на это:

body {
    background-image: url(images/bgtop.png), url(images/bg.png);
    background-repeat: repeat-x, repeat;
}

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

<body>
    <div id="bgTopDiv">
        content here
    </div>
</body>
body{
    background-image: url(images/bg.png);
}
#bgTopDiv{
    background-image: url(images/bgTop.png);
    background-repeat: repeat-x;
}
378
ответ дан BoltClock 23 November 2019 в 01:04
поделиться

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

Вот статья, демонстрирующая, как сделать, эффект может быть найден на Витамин . Подобное понятие для обертывания этих слоев 'луковой шелухи' может быть найдено на Список А Независимо .

4
ответ дан Mike B 23 November 2019 в 01:04
поделиться

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

1
ответ дан Sean James 23 November 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: