Для данных изображения мне проще использовать canvas.toBlob
(асинхронный)
function b64toBlob(b64, onsuccess, onerror) {
var img = new Image();
img.onerror = onerror;
img.onload = function onload() {
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
canvas.toBlob(onsuccess);
};
img.src = b64;
}
var base64Data = 'data:image/jpg;base64,/9j/4AAQSkZJRgABAQA...';
b64toBlob(base64Data,
function(blob) {
var url = window.URL.createObjectURL(blob);
// do something with url
}, function(error) {
// handle error
});
@Jason, да, <center>
работы. Хорошие времена. Я предложу следующее, хотя:
body {
text-align: center;
}
.my-centered-content {
margin: 0 auto; /* Centering */
display: inline;
}
<div class="my-centered-content">
<p>test</p>
<p>test</p>
</div>
ОТРЕДАКТИРУЙТЕ @Santi, элемент блочного уровня заполнит ширину родительского контейнера, таким образом, это эффективно будет width:100%
и текст будет течь слева, оставляя Вас с бесполезной разметкой и элементом нев центре. Вы могли бы хотеть попробовать display: inline-block;
. Firefox мог бы жаловаться, но это правильно. Кроме того, попытайтесь добавить a border: solid red 1px;
к CSS .my-centered-content
DIV для наблюдения, что происходит, поскольку Вы испытываете эти вещи.
Это будет самым хромым ответом, но он работает:
Используйте <центральный> тег устаревший.
:P
Я сказал Вам, что это будет Ламе. Но, как я сказал, это работает!
*дрожите*
Я думаю, что Ваш пример работал бы точно также, если бы Вы использовали <отделение> вместо <таблица>. Единственная разница - то, что текст в <таблица> также центрируется. Если Вы хотите это также, просто добавьте, что текст - выравнивается: центр; правило.
Другая вещь иметь в виду состоит в том, что <отделение> будет значением по умолчанию заполнять все доступное горизонтальное пространство. Поместите границу на него, если Вы не уверены, где это запускается и заканчивается.
Следующие работы достаточно хорошо. отметьте положение и использование автоматических
<div style="border: 1px solid black;
width: 300px;
height: 300px;">
<div style="width: 150px;
height: 150px;
background-color: blue;
position: relative;
left: auto;
right: auto;
margin-right: auto;
margin-left: auto;">
</div>
</div>
Примечание: не уверенный, если это работает в IE.
В FF3 Вы можете:
<div style="display: table; margin: 0px auto 0 auto;">test<br>test</div>
Это имеет преимущество использования независимо от того, что элемент имеет большую часть семантического смысла (замените отделение чем-то лучше, если соответствующий), но недостаток, который это приводит к сбою в IE (grr...)
Кроме этого, не устанавливая ширину, Ваш лучший выбор состоит в том, чтобы использовать JavaScript для точного расположения левого края. Я не уверен, классифицировали ли Вы это как 'изворотливый прием', все же.
Это действительно зависит от того, что Вы хотите сделать, конечно. Учитывая Ваш простой тестовый сценарий, выравнивается отделение с текстом-: центр имел бы точно тот же эффект.
#wrapper {
width: 100%;
border: 1px solid #333;
}
#content {
width: 200px;
background: #0f0;
}
<div id="wrapper" align="center">
<div id="content" align="left"> Content Here </div>
</div>