Только необходимо волноваться об использовании физически непрерывной памяти, если к буферу получит доступ устройство DMA на физически обращенной шине (как PCI). Проблема состоит в том, что много системных вызовов не имеют никакого способа знать, будет ли их буфер в конечном счете передан устройству DMA: как только Вы передаете буфер другой подсистеме ядра, Вы действительно не можете знать, куда это собирается пойти. Даже если ядро не использует буфер для DMA сегодня, , будущая разработка могла бы сделать так.
vmalloc часто медленнее, чем kmalloc, потому что этому, вероятно, придется повторно отобразить пространство буфера в фактически непрерывный диапазон. kmalloc никогда не повторно отображается, хотя, если не названный с GFP_ATOMIC kmalloc может заблокироваться.
kmalloc ограничен в размере буфера, который это может обеспечить: 128 кбайт *) глоток>. При необходимости в действительно большом буфере необходимо использовать vmalloc или некоторый другой механизм как резервирование верхней памяти при начальной загрузке.
*) глоток> Это было верно для более ранних ядер. На недавних ядрах (я протестировал это на 2.6.33.2), макс. размер единственного kmalloc составляет до 4 МБ! (Я записал справедливо подробное сообщение на этом .) — kaiwan
Для системного вызова, Вы не должны передавать GFP_ATOMIC kmalloc (), можно использовать GFP_KERNEL. Вы не обработчик прерываний: код приложения вводит контекст ядра посредством прерывания, это не прерывание.
То, что у вас здесь есть, является общей проблемой, на которую нет общего ответа, но что бы я на вашем месте попробовал, так как все эти вышеперечисленные предложения, очевидно, не работают, я бы попытался установить фон контейнера страниц любым цветом, скажем белым (#FFFFFFF), и я бы установил цвет фона тела любым другим цветом, кроме белого, скажем серым (#CCCCCC). И конечное положение сета - относительное, и, конечно, он должен быть расположен после всего, если вы хотите, чтобы он всегда был внизу. Таким образом, вы получите то, что вам нужно, на 100% уверенный, если будете следовать пошаговым инструкциям.
Попробуйте установить положение нижнего колонтитула на относительное и поиграйте с отрицательным верхним полем, чтобы получить желаемое это.
Обычно вам нужно задать нижнему колонтитулу фиксированную высоту
, а для подтолкнуть нижний колонтитул с другим div такой же высоты вниз. Однако есть и другие особенности браузера, которые вам необходимо учитывать:
html
и body
должны помимо высоты 100% нет (по умолчанию ) margin, чтобы нижний колонтитул не сдвинулся ниже этого значения. p
и div
на всей странице должны иметь no margin- top
, чтобы нижний колонтитул не сдвигался ниже этого количества верхних полей в каждом Firefox. div
должен использовать min-
height
of 100%
вместо height
, чтобы нижний колонтитул не перекрывал оставшуюся часть содержимого. . IE6, который не знает min-height
, отлично работает с height
, поэтому для этого вам нужно добавить хак * html
. В общем, вот SSCCE , просто скопируйте и запустите его:
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
<title>SO question 1900813</title>
<style>
html, body {
margin: 0;
height: 100%;
}
p, div {
margin-top: 0; /* Fix margin collapsing behaviour in FF. Use padding-top if necessary. */
}
#container {
position: relative;
min-height: 100%;
}
* html #container {
height: 100%; /* This is actually "min-height" for IE6 and older. */
}
#pushfooter {
height: 50px; /* Must be the same as footer height. */
}
#footer {
position: absolute;
bottom: 0;
height: 50px;
}
</style>
</head>
<body>
<div id="container">
<p>Some content</p>
<div id="pushfooter"></div>
<div id="footer">Footer</div>
</div>
</body>
</html>
Редактировать : после дополнительных испытаний я понял, что это действительно не работать в IE8 (я все еще считаю его бета-версией, поэтому я не использовал / не тестировал его, извините за это), , если только вы не разрешите ему отображать в режиме совместимости IE7 (вставьте здесь грустный смайлик), добавив следующий метатег к
(который я уже добавил в SSCCE здесь выше):
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
или , чтобы он мог отображаться в режиме причуд с использованием «неправильного» типа документа (либо удалите
или выберите один из доктипов, связанных с болезненно красными Q
полями в IE здесь ). Но я бы не стал этого делать, это также имеет больше негативных побочных эффектов.
И, что удивительно, сайт http://www.cssstickyfooter.com , как кто-то здесь упомянул здесь, который использовал совершенно другой подход также не работал в IE8 (попробуйте изменить размер окна браузера по оси Y, нижний колонтитул не будет перемещаться по нему, в отличие от других браузеров, включая IE6 / 7). Этот браузер меня не перестает удивлять. Действительно.
doctype (удалите
или выберите один из доктайпов, связанных с болезненно красными полями Q
в IE здесь ). Но я бы не стал этого делать, это также имеет больше негативных побочных эффектов.
И, что удивительно, сайт http://www.cssstickyfooter.com , как кто-то здесь упомянул здесь, который использовал совершенно другой подход также не работал здесь в IE8 (попробуйте изменить размер окна браузера по оси Y, нижний колонтитул не будет перемещаться по нему, в отличие от других браузеров, включая IE6 / 7). Этот браузер меня не перестает удивлять. Действительно.
doctype (удалите
или выберите один из доктайпов, связанных с болезненно красными полями Q
в IE здесь ). Но я бы не стал этого делать, это также имеет больше негативных побочных эффектов.
И, что удивительно, сайт http://www.cssstickyfooter.com , как кто-то здесь упомянул здесь, который использовал совершенно другой подход также не работал в IE8 (попробуйте изменить размер окна браузера по оси Y, нижний колонтитул не будет перемещаться по нему, в отличие от других браузеров, включая IE6 / 7). Этот браузер меня не перестает удивлять. Действительно.
у которого также есть более отрицательные побочные эффекты.И, что удивительно, сайт http://www.cssstickyfooter.com , как уже упоминалось здесь кем-то другим, который использовал совершенно другой подход, также сделал ] not здесь работает в IE8 (попробуйте изменить размер окна браузера по оси Y, нижний колонтитул не будет перемещаться по нему, в отличие от других браузеров, включая IE6 / 7). Этот браузер меня не перестает удивлять. Действительно.
у которого также есть более отрицательные побочные эффекты.И, что удивительно, сайт http://www.cssstickyfooter.com , как здесь упоминал кто-то здесь, который использовал совершенно другой подход, также сделал ] not здесь работает в IE8 (попробуйте изменить размер окна браузера по оси Y, нижний колонтитул не будет перемещаться по нему, в отличие от других браузеров, включая IE6 / 7). Этот браузер меня не перестает удивлять. Действительно.
. Зависит от того, что вы хотите сделать. Если вы хотите, чтобы он всегда был виден в нижней части экрана, вам следует использовать
div.footer{
position: fixed;
bottom: 0;
}
. Убедитесь, что у вас есть отступ в нижней части вашего тела (или контейнера, чтобы люди действительно могли прокручивать текст до конца) . Основная проблема здесь в том, что при изменении размера все элементы будут перекрываться.
Если вы просто хотите иметь нижний колонтитул с фоновым изображением / цветом, который растягивается до конца (для страниц, высота которых не является полной), вы можно попытаться использовать принцип псевдоколонки или даже попытаться дать своему телу цвет фона нижнего колонтитула и исправить фон заголовка / содержимого.
Сегодня я наткнулся на эту страницу: http://www.xs4all.nl/~peterned/examples/csslayout1.html
Может быть полезно
Оформить заказ CSS Sticky Footer для отличного метода кроссбраузерности.
По сути, этот сайт заставляет нижний колонтитул прилипать к краю браузера и дает ему отрицательное поле, которое имеет то же значение, что и высота нижнего колонтитула. Таким образом, нижний колонтитул обязательно будет оставаться внизу.
Вы можете добавить push div к последнему элементу перед нижним колонтитулом, чтобы всегда гарантировать, что нижний колонтитул не перекрывает содержимое.
В этом примере :
<html>
<body>
<div class="header" />
<div class="content" />
<div class="footer_push" />
<div class="footer" />
</body>
</html>
Если
всегда имеет высоту 75 пикселей
, используйте следующий CSS:
html, body { height: 100%; } /* Take all available vertical space */
/* Push the bottom of the page 75px.
This will not make scrollbars appear
if the content fits already. */
.footer_push { height: 75px; }
/* Position the footer */
.footer { position: absolute; bottom: 0; height: 75px; }
То, что вы ищете, - это липкий нижний колонтитул, вы можете найти множество ресурсов, подобных этому: http://ryanfait.com/resources/footer-stick-to -bottom-of-page /
попробуйте следующее:
#wpr{
display: table;
height: 100%;
width: 100%;
}
.dsp-tr{
display: table-row;
}
.dsp-tc{
display: table-cell;
}
#ftr-cnr{
text-align: center;
vertical-align: middle;
}
#ftr{
background-color: red;
padding: 10px 0px;
font-size: 24px;
}
<div id="wpr">
<div class="dsp-tr">
<div class="dsp-tc">
body
</div>
</div>
<div class="dsp-tr">
<div class="dsp-tc" id="ftr-cnr">
<div id="ftr">
footer
</div>
</div>
</div>
</div>
отображение: таблица не делает ее таблицей,
Есть ли у вас DOCTYPE заявление в верхней части HTML?
Если да, есть большая вероятность, что у меня есть решение для вас.
Я пытался сделать height:100% table или div (предполагая, что это базовый краеугольный камень для функции расширяющегося футера)
Независимо от того, что я сделал, 100% height не сработало! элементы просто не растягивались...
Я сузил его до очень базового HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test1</title>
</head>
<body>
<div style="border: 2px solid red; height: 100%">Hello
World</div>
</body>
</html>
но DIV не растягивался до конца вниз (100% было проигнорировано). Это было верно и для таблиц с обычным атрибутом height="100%".
В качестве отчаянной последней догадки я удалил строку DOCTYPE, в результате чего получился этот код
<html>
<head>
<title>Test1</title>
</head>
<body>
<div style="border: 2px solid red; height: 100%">Hello
World</div>
</body>
</html>
И это сработало!
Я уверен, что есть хорошее объяснение, но мне действительно было все равно, так как это решило проблему
Обновление
См. соответствующий вопрос (заданный мной)
.У нас была эта проблема несколько раз. Мы не смогли найти только Cross Browser CSS только для решения. Мы наконец прибегали к jQuery. Мы написали наших собственных (я не могу публиковать), но этот http://www.hardcode.nl/archives_139/article_244-jquery-sticky-footer.htm выглядит многообещающим:
$(function(){
positionFooter();
function positionFooter(){
if($(document.body).height() < $(window).height()){
$("#pageFooterOuter").css({position: "absolute",top:($(window).scrollTop()+$(window).height()-$("#pageFooterOuter").height())+"px"})
}
}
$(window)
.scroll(positionFooter)
.resize(positionFooter)
});