HTML要素をイメージとしてダウンロードする方法.訪問カードデザイナー
38203 ワード
こんにちは、今日の記事では、素晴らしい訪問カードデザイナーを作成することを学びます.あなたが会社のロゴ、そのスローガン、ウェブサイトのリンクとサポートのメールを追加することができます.また、訪問カードの背景を変更することができます.また、あなたのシステム上のデザインの訪問カードをダウンロードすることができます最高のもの.
デモを参照したり、より良い理解のための完全なコーディングチュートリアルビデオをしたい.下記のチュートリアルを見ることができます.
ビデオチュートリアル
コード
このプロジェクトには、3つのファイルがあります.
したがって、HTMLの基本的な構造から始める
出力
さあ、メイク
出力
現在、カード要素の中にロゴ容器を作ります.
出力
すごい!我々は、カードの設計で行われます.あなたがすぐに入力ボックス上の詳細を入力することができます.今すぐ右側にオプションを作りましょう.
出力
今コースの背景画像を作る.
出力
今私たちのスタイルで行われます.今すぐダウンロードのためのボタンを作成します.またアンカーリンクを作るが、tそれに任意のテキストを与える.
出力
さあ早速JSを書きましょう.オープン
まずロゴを機能アップロードしましょう.選択
それから、私たちがファイルを得たあと、我々はそのイメージファイルを読むためにファイルリーダーを必要とします.それで、我々はこれを使っています.
すごい!アップロードのロゴが動作しています.今、我々はユーザーがカードの背景を変更できるようにする必要があります.すべての背景の画像要素を選択します.カード要素も.
今すぐ使用
を忘れないでください
さて、選択
サイトを実行してダウンロードしようとすると、おそらくコンソールでこのエラーが表示されます.
エラー
さて、ブラウザがキャンバスをリンクに変換するのを止めているので、このエラーは来るだけです.ユーザーシステムのローカルファイルにアクセスできないので.あなたがこのサイトを主催するならば、あなたは誤りを見ません.しかし、ビデオチュートリアルでは ラン その後、実行 今すぐあなたの
今すぐ作成
サーバ.js
すごい!現在、サイトはlocalhost上で動作しています.そして今あなたはデザインをダウンロードすることができます.それは今日の人々のためです.私は、あなたが各々とすべてを理解したことを望みます.あなたが疑いを持っているか、私が何かを逃したならば、私にコメントで知らせさせました.
あなたが役に立つかもしれない記事
あなたが私のYouTubeチャンネルを予約することができるならば、私は本当に感謝します.私は素晴らしいWebコンテンツを作成します.
Source Code
あなたの寄付は、本当に私にこのようなより驚くべきチュートリアルをする動機を与えます.サポート・オンpatreon , Buy me a coffee , Donate me on paypal
読書ありがとう.
デモを参照したり、より良い理解のための完全なコーディングチュートリアルビデオをしたい.下記のチュートリアルを見ることができます.
ビデオチュートリアル
I appreciate if you can support me by subscribing my youtube channel.
コード
このプロジェクトには、3つのファイルがあります.
index.html
, style.css
and app.js
.したがって、HTMLの基本的な構造から始める
style.css
and app.js
ファイルを指定します.その後、見出しのH 1要素を作成します.<h1 class="heading">design your <span>visiting card</span></h1>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
width: 100%;
height: 100vh;
background: #f6f6f6;
font-family: 'roboto', sans-serif;
padding: 50px;
}
.heading{
text-align: center;
text-transform: capitalize;
font-size: 70px;
font-weight: 400;
margin-bottom: 5vh;
}
.heading span{
color: #467aff;
}
出力
さあ、メイク
div
左側のカードと右側のデザインオプションを含む要素.メイクするdiv
カード要素も.<div class="main">
<div class="card">
</div>
</div>
.main{
display: flex;
padding: 50px;
flex-wrap: wrap;
}
.card{
width: 45%;
margin-right: 5%;
min-width: 500px;
height: 300px;
background: #fff;
position: relative;
border-radius: 5px;
padding: 20px;
background-image: url(img/img1.png);
background-size: cover;
overflow: hidden;
}
.card::before{
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
opacity: 0.2;
}
出力
現在、カード要素の中にロゴ容器を作ります.
<div class="logo"></div>
.logo{
position: relative;
width: 100px;
height: 100px;
border-radius: 50%;
display: block;
margin: 5px auto;
background-image: url('img/logo.png');
background-size: cover;
}
もちろん、カード要素の中にいくつかの入力を入力します.<input type="text" class="name" maxlength="30" placeholder="business name">
<input type="text" class="slogan" maxlength="50" placeholder="business slogan">
<input type="text" class="website-link" placeholder="website">
<input type="text" class="email" placeholder="email">
input{
position: relative;
text-align: center;
outline: none;
font-weight: 500;
margin-top: 20px;
margin-bottom: 10px;
background: none;
width: 100%;
border: none;
font-size: 30px;
color: #fff;
transition: .5s;
}
::placeholder{
text-transform: capitalize;
color: #fff;
}
.slogan{
font-size: 20px;
margin: 5px 0;
}
input:focus{
background: rgba(255, 255, 255, 0.1);
border-radius: 2px;
}
.website-link, .email{
font-size: 16px;
opacity: .75;
position: absolute;
text-align: left;
width: 50%;
height: auto;
bottom: 10px;
}
.website-link{
left: 20px;
}
.email{
right: 20px;
text-align: right;
}
出力
すごい!我々は、カードの設計で行われます.あなたがすぐに入力ボックス上の詳細を入力することができます.今すぐ右側にオプションを作りましょう.
<!-- settings -->
<div class="setting">
<input type="file" accept="*image" id="upload" hidden>
<label for="upload" class="btn upload">upload logo</label>
</div>
上のコードではdiv
元素内部main
要素.そして、この中にsetting
要素.アップロード入力をしました.hidden
属性を使用して入力を非表示にします..setting{
width: 50%;
}
.btn{
font-size: 16px;
text-transform: capitalize;
padding: 10px 20px;
border-radius: 5px;
background: #fff;
border: none;
outline: none;
cursor: pointer;
}
.btn:focus, .btn:hover{
background-color: rgba(0, 0, 0, 0.1);
}
出力
今コースの背景画像を作る.
<!-- backgrounds -->
<div class="backgrounds">
<img src="img/img1.png" class="active" alt="">
<img src="img/img2.png" alt="">
<img src="img/img3.png" alt="">
<img src="img/img4.png" alt="">
<img src="img/img5.png" alt="">
<img src="img/img6.png" alt="">
</div>
.backgrounds{
width: 100%;
height: auto;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 10px;
padding: 10px;
background: rgba(0, 0, 0, 0.1);
border-radius: 10px;
margin: 20px 0;
}
.backgrounds img{
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 5px;
transition: .5s;
border: 0;
cursor: pointer;
}
.backgrounds img:hover{
opacity: 0.5;
}
.backgrounds img.active{
border: 5px solid #fff;
}
出力
今私たちのスタイルで行われます.今すぐダウンロードのためのボタンを作成します.またアンカーリンクを作るが、tそれに任意のテキストを与える.
<a href="#" id="link" download="visiting card.png"></a>
<button class="btn download-btn">download design</button>
The above code is inside
.setting
element.
download
属性を使用してダウンロードリンクを設定します.ダウンロード属性の値はダウンロードした画像のファイル名です.私たちはlink
ダウンロード用要素.出力
さあ早速JSを書きましょう.オープン
app.js
ファイル.必ずインポートしてくださいindex
ファイル.まずロゴを機能アップロードしましょう.選択
upload
入力とlogo
要素.// setting up logo
const uploadBtn = document.querySelector('#upload');
const logo = document.querySelector('.logo');
次にchange
イベントupload
入力.uploadBtn.addEventListener('change', () => {
if(uploadBtn.files && uploadBtn.files[0]){
let reader = new FileReader(); // init the file reader
reader.addEventListener('load', () => {
// reader.result will return the src of the uploaded image
logo.style.backgroundImage = `url('${reader.result}')`;
})
reader.readAsDataURL(uploadBtn.files[0]);
}
})
インサイドchange
イベント.if(uploadBtn.files && uploadBtn.files[0])
アップロードされたファイルの存在をチェックする行.この条件はファイルがアップロードされたときにのみ有効です.それから、私たちがファイルを得たあと、我々はそのイメージファイルを読むためにファイルリーダーを必要とします.それで、我々はこれを使っています.
let reader = new FileReader();
リーダーを初期化した後、Loadイベントを追加し、logo
そこの要素の背景.reader.addEventListener('load', () => {
// reader.result will return the src of the uploaded image
logo.style.backgroundImage = `url('${reader.result}')`;
})
そして最後にはreader.readAsDataURL(uploadBtn.files[0]);
この線は読者が読まなければならないことを教えている.この場合、ファイルの配列に最初にアップロードされたファイルが欲しいです.すごい!アップロードのロゴが動作しています.今、我々はユーザーがカードの背景を変更できるようにする必要があります.すべての背景の画像要素を選択します.カード要素も.
const bgs = document.querySelectorAll('.backgrounds img');
const card = document.querySelector('.card');
let activeBg = 0; //default background
activeBg
現在選択されているバックグラウンドインデックスを保存します.このため、結果を達成するためにループを少なく実行できます.今すぐ使用
forEach
ループするbgs
追加click
すべての画像にイベント.その変化の中でトグルactive
クラスを変更し、activeBg
値.bgs.forEach((item, i) => {
item.addEventListener('click', () => {
bgs[activeBg].classList.remove('active');
item.classList.add('active');
card.style.backgroundImage = `url('${item.src}')`;
activeBg = i;
})
})
今最後に、我々は機能をダウンロードする必要があります.このために使用しますhtml2canvas
図書館.このライブラリは、HTML要素をキャンバスに変換するのに役立ちます.そして、その後、我々はキャンバスをダウンロードすることができます.を忘れないでください
html2canvas
CDNインサイドindex
ファイル.<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
Add this before
app.js
script.
さて、選択
download
ボタンapp.js
. 関数を作成するexportCard
これはカードをエクスポートします.を呼び出し、exportCard
クリック時の機能download
ボタン.// download button
let downloadBtn = document.querySelector('.download-btn');
let exportCard = () => {
}
downloadBtn.addEventListener('click', () => {
exportCard();
})
今すぐ内側のコードexportCard
.let exportCard = () => {
html2canvas(card)
.then(canvas => {
let link = document.getElementById('link');
link.href = canvas.toDataURL();
link.click(); // click on the link
})
}
html2canvas
はライブラリのメソッドです.キャンバスに要素を覆っている.このメソッドの最初の引数はelement
. この場合私はcard
要素.その後、キャンバスを使用して取得then
メソッド.この中でlink
我々が作った要素HTML
ファイル.設定するhref
to canvas.toDataURL()
(これはキャンバスのsrc/linkを返す).そして最後に電話でリンクをクリックlink.click()
.サイトを実行してダウンロードしようとすると、おそらくコンソールでこのエラーが表示されます.
エラー
さて、ブラウザがキャンバスをリンクに変換するのを止めているので、このエラーは来るだけです.ユーザーシステムのローカルファイルにアクセスできないので.あなたがこのサイトを主催するならば、あなたは誤りを見ません.しかし、ビデオチュートリアルでは
localhost
. ではサーバを作りましょう.npm init
ノードのアプリケーションを初期化するコマンドを端末で.npm i express.js nodemon
取り付けるepxress
and nodemon
図書館.package.json
. 変更するmain
to server.js
. そして、scripts
."main": "server.js",
"scripts": {
"start": "nodemon server.js"
},
server.js
ディレクトリ内のファイル.サーバをコード化します.サーバ.js
const express = require('express');
const app = express();
app.use(express.static(__dirname));
app.get('/', (req, res) => {
res.sendFile('index.html');
})
app.listen(3000, () => {
console.log('listening......')
})
実行してサーバーを起動しますnpm start
端末のコマンド.すごい!現在、サイトはlocalhost上で動作しています.そして今あなたはデザインをダウンロードすることができます.それは今日の人々のためです.私は、あなたが各々とすべてを理解したことを望みます.あなたが疑いを持っているか、私が何かを逃したならば、私にコメントで知らせさせました.
あなたが役に立つかもしれない記事
Source Code
あなたの寄付は、本当に私にこのようなより驚くべきチュートリアルをする動機を与えます.サポート・オンpatreon , Buy me a coffee , Donate me on paypal
読書ありがとう.
Reference
この問題について(HTML要素をイメージとしてダウンロードする方法.訪問カードデザイナー), 我々は、より多くの情報をここで見つけました https://dev.to/kunaal438/how-to-make-a-designing-website-with-html-css-and-js-visiting-card-designer-4ml4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol