Icons
Principe général
Il existe plusieurs façons de gérer les pictos sur un projet :
- via une fonticon (librairie fontawesome ou fonticon sur mesure)
- via un sprite svg
- via des fichiers svg en dur
Chaque solution a ses avantages et ses inconvénients.
Fonticon sur mesure
Via gulp et à partir des fichiers svg sélectionnés, une fonticon est générée et les pictos sont disponibles via la balise i et la classe .ico-xxxxx.
address-card
analytics
angle-double-down
angle-double-left
angle-double-right
angle-double-up
angle-down
angle-left
angle-right
angle-up
archive
arrow-circle-down
arrow-circle-left
arrow-circle-right
arrow-circle-up
arrow-down
arrow-from-bottom
arrow-from-left
arrow-from-right
arrow-from-top
arrow-left
arrow-right
arrow-square-down
arrow-square-left
arrow-square-right
arrow-square-up
arrow-to-bottom
arrow-to-left
arrow-to-right
arrow-to-top
arrow-up
award
bars
bell
bomb
bong
bookmark
box-ballot
box-open
box
brackets-curly
brackets
bug
building
bullhorn
cactus
calendar-alt
calendar
camera-retro
camera
capsules
caret-square-down
caret-square-left
caret-square-right
caret-square-up
cart-arrow-down
cart-plus
chart-area
chart-bar
chart-line-down
chart-line
chart-network
chart-pie-alt
chart-pie
check-circle
check-double
check-square
check
chevron-circle-down
chevron-circle-left
chevron-circle-right
chevron-circle-up
chevron-double-down
chevron-double-left
chevron-double-right
chevron-double-up
chevron-down
chevron-left
chevron-right
chevron-square-down
chevron-square-left
chevron-square-right
chevron-square-up
chevron-up
circle
clipboard-check
clipboard-list
clock
code-branch
code
cog
cogs
coins
comment-alt
comment-check
comment-dots
comment-edit
comment-exclamation
comment-lines
comment
comments-alt
comments
cookie-bite
cookie
copy
copyright
credit-card
cube
cubes
database
desktop-alt
desktop
diamond
dice-d10
dice-d12
dice-d20
dice-d4
dice-d6
dice-d8
dolly-flatbed-alt
dolly
download
envelope
exchange
exclamation-triangle
eye-slash
eye
file-alt
file-archive
file-chart-line
file-check
file-pdf
file-search
file
filter
flag-alt
flag
flask-potion
flask
folder-open
folder
gem
hand-holding-seedling
handshake-alt
hashtag
hdd
heart-rate
home-alt
home-lg-alt
id-badge
id-card
image
info-circle
info-square
lamp-desk
lightbulb-on
lightbulb-slash
lightbulb
link
location-arrow
lock-alt
lock-open-alt
lock-open
lock
map-marked-alt
map-marked
map-marker-alt
map-marker-check
map-signs
map
marker
microphone-alt
microphone
paint-roller
paper-plane
paperclip
paste
pause-circle
pause
pen-alt
pen-fancy
pencil-alt
pencil
percent
percentage
person-dolly-empty
person-dolly
phone-alt
phone
play-circle
play
plus-circle
plus-square
plus
portrait
power-off
project-diagram
question
quote-left
quote-right
radiation-alt
radiation
radio-alt
radio
raindrops
receipt
recycle
redo-alt
redo
rocket-launch
rocket
route-highway
route-interstate
save
search-minus
search-plus
search
share-alt-square
share-alt
share-square
share
shield-check
shield
shipping-fast
shopping-bag
shopping-basket
shopping-cart
sign-out
sliders-h
sliders-v
spinner
star-solid
star
store
stream
swatchbook
tachometer-alt
tag
tags
tasks-alt
temperature-low
thermometer-half
times-circle
times
toggle-off
toggle-on
trash-alt
trash
trophy
truck
umbrella
universal-access
unlock-alt
unlock
user-alt
user-circle
user-friends
user
users-class
users
vial
wreath
wrench
gulp
// ICONS > FONTS & LESS
function ico1() {
return src(config.ico.src)
.pipe(
iconfontCss({
cssClass: config.ico.cssClass,
fontName: config.ico.fontName,
fontPath: config.ico.fontPath,
path: config.ico.lessTemplate,
targetPath: config.ico.lessPath,
cacheBuster: config.ico.cacheBuster
})
)
.pipe(
iconfont({
fontName: config.ico.fontName,
formats: config.ico.formats
})
)
.pipe(dest(config.ico.fontDest));
}
// ICONS > PLANCHE CONTACT
function ico2() {
return src(config.ico.src)
.pipe(
iconfontTemplate({
cssClass: config.ico.cssClass,
fontName: config.ico.fontName,
path: config.ico.phpTemplate,
targetPath: config.ico.phpPath
})
)
.pipe(dest(config.ico.out));
}
exports.ico = series(ico1, ico2, css, watcher);
scss
@mixin ico-styles {
font-family:"icons";
-webkit-font-smoothing:antialiased;
-moz-osx-font-smoothing:grayscale;
font-style:normal; font-variant:normal; font-weight:normal;
text-decoration:none; text-transform:none;
}
%ico { @include ico-styles; }
@function ico-char($filename) {
$char: "";
@if $filename == account { $char:"\E001"; }
@if $filename == arrow-down { $char:"\E002"; }
@return $char;
}
@mixin ico($filename, $insert: before, $extend: true) {
&:#{$insert} {
@if $extend {
@extend %ico;
} @else {
@include ico-styles;
}
content: ico-char($filename);
}
}
.ico-account {
@include ico(account);
}
.ico-arrow-down {
@include ico(arrow-down);
}
// Usage scss
.toto {
@include ico-styles;
&:before { content: ico-char(account); }
}
Sprite SVG
Via gulp et à partir des fichiers svg sélectionnés, un fichier sprite est généré et les pictos sont disponibles via une balise svg avec l'id correspondant pour n'afficher que celui concerné.
angle-left
arrow-right
building
cactus
capsules
crop
cup
cup-fill
cup-hot
cup-hot-fill
cup-straw
gulp
// SPRITE SVG
function spritesvg() {
return src(config.sprite.src)
.pipe(plumber())
.pipe(svgSprite({
mode: {
symbol: {
dest: './',
sprite: 'sprite.svg',
render: {
symbol: {
template: config.sprite.htmlTemplate,
dest: config.sprite.htmlDest
}
}
}
}
}))
.pipe(dest(config.sprite.out));
}
PHP
$svgId = 'capsules';
include('inc/compo/svgsprite.php');
Thème