<html>
<head>
<meta charset="utf-8">
<title>Print</title>
<link rel="stylesheet" href="css/test.css">
</head>
<body>
<div class="images">
<div class="image" onclick="printImg(this.getElementsByTagName('img')[0])">
<img src="http://fc08.deviantart.net/fs8/i/2005/303/1/4/autumn_sun_by_ssilence.jpg" alt="image">
</div>
<div class="image" onclick="printImg(this.getElementsByTagName('img')[0])">
<img src="http://globe-views.com/dcim/dreams/image/image-03.jpg">
</div>
<div class="image" onclick="printImg(this.getElementsByTagName('img')[0])">
<img src="http://www.hdwallpapersimages.com/wp-content/uploads/images/Frozen-Logo-Symbol-HD-Images.jpg" alt="image">
</div>
<div class="image" onclick="printImg(this.getElementsByTagName('img')[0])">
<img src="http://bygaga.com.ua/uploads/posts/2015-02/1424758490_krasivye-i-klassnye-kartinki-o-vesne-13.jpg" alt="image">
</div>
</div>
<script src="js/test.js"></script>
</body>
</html>
@charset "utf-8";
html,
body {
width: 100%;
padding: 0;
margin: 0;
}
.images img {
display: block;
max-height: 220px;
padding: 0;
margin: 0;
}
.images {
display: flex;
flex-flow: row wrap;
justify-content: space-around;
align-items: flex-start;
width: 100%;
margin-top: 50px;
}
.image{
display: block;
position: relative;
margin: 10px;
padding: 10px;
box-shadow: 0 0 5px 0 rgba(0,0,0,.5);
}
.image::after {
position: absolute;
width: 100px;
height: 100px;
top: 50%;
left: 50%;
margin-top: -50px;
margin-left: -50px;
background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE4LjEuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTYgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE2IDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8Zz4NCgkJPHBhdGggc3R5bGU9ImZpbGw6I2ZmZjsiIGQ9Ik00LDEyLjV2M2g4di0zdi0ySDRWMTIuNXogTTUsMTEuNWg2djFINVYxMS41eiBNNSwxMy41aDZ2MUg1VjEzLjV6Ii8+DQoJCTxwb2x5Z29uIHN0eWxlPSJmaWxsOiNmZmY7IiBwb2ludHM9IjEyLDMuNSAxMiwwLjUgNCwwLjUgNCwzLjUgNCw1LjUgMTIsNS41IAkJIi8+DQoJCTxwYXRoIHN0eWxlPSJmaWxsOiNmZmY7IiBkPSJNMTQsMy41aC0xdjJ2MUgzdi0xdi0ySDJjLTEsMC0yLDEtMiwydjVjMCwxLDEsMiwyLDJoMXYtMnYtMWgxMHYxdjJoMWMxLDAsMi0xLDItMnYtNQ0KCQkJQzE2LDQuNSwxNSwzLjUsMTQsMy41eiIvPg0KCTwvZz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg0K') no-repeat 50% 50% black;
background-size: 75% 75%;
border-radius: 12px;
content: " ";
opacity: 0;
transform: scale(.5);
transition: opacity .25s ease,
transform .25s ease;
}
.image:hover::after {
opacity: .5;
transform: scale(1);
}
'use strict';
// Создать iFrame:
var iFr= document.createElement('iframe');
iFr.src = '#';
// Установить ему ширину равную ширине body
// (чтобы при печати изображение было на весь лист):
iFr.width = document.body.clientWidth;
// Сделать его невидимым:
iFr.style.display = "none";
// Добавить его в документ:
document.body.appendChild(iFr);
/**
* Функция, которая должна вызываться по клику на кнопке Print.
* Приримает в аргументе ссылку на элемент с изображением для печати,
* или URL изображения.
*/
function printImg (imageArg) {
// Если переданный аргумент не является строкой (с URL) или изображением - выдать ошибку.
if (!(imageArg instanceof HTMLImageElement || typeof imageArg === 'string')) {
throw new TypeError('printImg(): expected string or HTMLImageElement in first argument');
}
// Создать элемент для хранения изображения:
var image = new Image();
// Растянуть изображение на ширину iFrame (чтобы при печати все в лист влезло):
image.style.width = '100%';
// Если передан HTMLImageElement - взять URL изображения из него,
// иначе взять URL из переданной строки:
image.src = imageArg.src || imageArg;
// Когда изображение загрузится надо поместить его в iFrame и отправить на печать:
image.onload = function () {
// Удалить обработчик т.к. в хроме еще одно событие onload наступит
// после того как изображение вставится в документ (iFrame).
this.onload = null;
// Очистить iFrame и вставить изображение:
iFr.contentWindow.document.body.innerHTML = "";
iFr.contentWindow.document.body.appendChild(this);
// Отправить на печать:
// Тут можно было бы обойтись и одной командой iFr.contentWindow.print(),
// но в IE это не сработает - для него надо делать отдельную инструкцию
// (За идею спасибо Jonas Stawski - http://stackoverflow.com/a/24953075)
var ie = iFr.contentWindow.document.execCommand('print', false, null);
if (!ie) iFr.contentWindow.print();
};
}
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |