updated theme `Twenty Sixteen` version 2.2

This commit is contained in:
KawaiiPunk 2020-08-13 14:54:00 +00:00 committed by Gitium
parent b3cd4e0a59
commit de9808fd12
20 changed files with 2105 additions and 1997 deletions

View File

@ -200,7 +200,7 @@ p.has-drop-cap:not(:focus)::first-letter {
.wp-block-table { .wp-block-table {
border-collapse: separate; border-collapse: separate;
border-spacing: 0; border-spacing: 0;
border-width: 1px 0 0 1px; border-width: 0;
margin: 0 0 1.75em; margin: 0 0 1.75em;
table-layout: fixed; table-layout: fixed;
width: 100%; width: 100%;

View File

@ -12,6 +12,7 @@ Description: Used to style blocks in the editor.
4.0 Blocks - Formatting 4.0 Blocks - Formatting
5.0 Blocks - Layout Elements 5.0 Blocks - Layout Elements
6.0 Blocks - Widgets 6.0 Blocks - Widgets
7.0 Blocks - Colors
--------------------------------------------------------------*/ --------------------------------------------------------------*/
/*-------------------------------------------------------------- /*--------------------------------------------------------------
@ -614,3 +615,103 @@ Description: Used to style blocks in the editor.
.edit-post-visual-editor .wp-block-latest-posts.is-grid li { .edit-post-visual-editor .wp-block-latest-posts.is-grid li {
margin-bottom: 16px; margin-bottom: 16px;
} }
/*--------------------------------------------------------------
7.0 Blocks - Colors
--------------------------------------------------------------*/
:root .editor-styles-wrapper .has-dark-gray-color {
color: #1a1a1a;
}
:root .editor-styles-wrapper .has-dark-gray-background-color {
background-color: #1a1a1a;
}
:root .editor-styles-wrapper .has-medium-gray-color {
color: #686868;
}
:root .editor-styles-wrapper .has-medium-gray-background-color {
background-color: #686868;
}
:root .editor-styles-wrapper .has-light-gray-color {
color: #e5e5e5;
}
:root .editor-styles-wrapper .has-light-gray-background-color {
background-color: #e5e5e5;
}
:root .editor-styles-wrapper .has-white-color {
color: #fff;
}
:root .editor-styles-wrapper .has-white-background-color {
background-color: #fff;
}
:root .editor-styles-wrapper .has-blue-gray-color {
color: #4d545c;
}
:root .editor-styles-wrapper .has-blue-gray-background-color {
background-color: #4d545c;
}
:root .editor-styles-wrapper .has-bright-blue-color {
color: #007acc;
}
:root .editor-styles-wrapper .has-bright-blue-background-color {
background-color: #007acc;
}
:root .editor-styles-wrapper .has-light-blue-color {
color: #9adffd;
}
:root .editor-styles-wrapper .has-light-blue-background-color {
background-color: #9adffd;
}
:root .editor-styles-wrapper .has-dark-brown-color {
color: #402b30;
}
:root .editor-styles-wrapper .has-dark-brown-background-color {
background-color: #402b30;
}
:root .editor-styles-wrapper .has-medium-brown-color {
color: #774e24;
}
:root .editor-styles-wrapper .has-medium-brown-background-color {
background-color: #774e24;
}
:root .editor-styles-wrapper .has-dark-red-color {
color: #640c1f;
}
:root .editor-styles-wrapper .has-dark-red-background-color {
background-color: #640c1f;
}
:root .editor-styles-wrapper .has-bright-red-color {
color: #ff675f;
}
:root .editor-styles-wrapper .has-bright-red-background-color {
background-color: #ff675f;
}
:root .editor-styles-wrapper .has-yellow-color {
color: #ffef8e;
}
:root .editor-styles-wrapper .has-yellow-background-color {
background-color: #ffef8e;
}

View File

@ -238,9 +238,9 @@ add_action( 'after_setup_theme', 'twentysixteen_content_width', 0 );
* *
* @since Twenty Sixteen 1.6 * @since Twenty Sixteen 1.6
* *
* @param array $urls URLs to print for resource hints. * @param array $urls URLs to print for resource hints.
* @param string $relation_type The relation type the URLs are printed. * @param string $relation_type The relation type the URLs are printed.
* @return array $urls URLs to print for resource hints. * @return array URLs to print for resource hints.
*/ */
function twentysixteen_resource_hints( $urls, $relation_type ) { function twentysixteen_resource_hints( $urls, $relation_type ) {
if ( wp_style_is( 'twentysixteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { if ( wp_style_is( 'twentysixteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) {

View File

@ -1,9 +1,9 @@
Genericons is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Genericons is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
The fonts are distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. The fonts are distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
This license does not convey any intellectual property rights to third party trademarks that may be included in the icon font; such marks remain subject to all rights and guidelines of use of their owner. This license does not convey any intellectual property rights to third party trademarks that may be included in the icon font; such marks remain subject to all rights and guidelines of use of their owner.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -1,339 +1,339 @@
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
Preamble Preamble
The licenses for most software are designed to take away your The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to the GNU Lesser General Public License instead.) You can apply it to
your programs, too. your programs, too.
When we speak of free software, we are referring to freedom, not When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things. in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights. anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it. distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their source code. And you must show them these terms so they know their
rights. rights.
We protect your rights with two steps: (1) copyright the software, and We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy, (2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software. distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original that any problems introduced by others will not reflect on the original
authors' reputations. authors' reputations.
Finally, any free program is threatened constantly by software Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all. patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and The precise terms and conditions for copying, distribution and
modification follow. modification follow.
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains 0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below, under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program" refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law: means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it, that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you". the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program). Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does. Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's 1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty; notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License and give any other recipients of the Program a copy of this License
along with the Program. along with the Program.
You may charge a fee for the physical act of transferring a copy, and You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee. you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion 2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1 distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions: above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change. stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License. parties under the terms of this License.
c) If the modified program normally reads commands interactively c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on does not normally print such an announcement, your work based on
the Program is not required to print an announcement.) the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program, identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it. entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or exercise the right to control the distribution of derivative or
collective works based on the Program. collective works based on the Program.
In addition, mere aggregation of another work not based on the Program In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under a storage or distribution medium does not bring the other work under
the scope of this License. the scope of this License.
3. You may copy and distribute the Program (or a work based on it, 3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following: Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or, 1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or, customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such received the program in object code or executable form with such
an offer, in accord with Subsection b above.) an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component operating system on which the executable runs, unless that component
itself accompanies the executable. itself accompanies the executable.
If distribution of executable or object code is made by offering If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not distribution of the source code, even though third parties are not
compelled to copy the source along with the object code. compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program 4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License. void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such this License will not have their licenses terminated so long as such
parties remain in full compliance. parties remain in full compliance.
5. You are not required to accept this License, since you have not 5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying all its terms and conditions for copying, distributing or modifying
the Program or works based on it. the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the 6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein. restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to You are not responsible for enforcing compliance by third parties to
this License. this License.
7. If, as a consequence of a court judgment or allegation of patent 7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues), infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program. refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other apply and the section as a whole is intended to apply in other
circumstances. circumstances.
It is not the purpose of this section to induce you to infringe any It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is integrity of the free software distribution system, which is
implemented by public license practices. Many people have made implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot to distribute software through any other system and a licensee cannot
impose that choice. impose that choice.
This section is intended to make thoroughly clear what is believed to This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License. be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in 8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License. the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions 9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to be similar in spirit to the present version, but may differ in detail to
address new problems or concerns. address new problems or concerns.
Each version is given a distinguishing version number. If the Program Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software this License, you may choose any version ever published by the Free Software
Foundation. Foundation.
10. If you wish to incorporate parts of the Program into other free 10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally. of promoting the sharing and reuse of software generally.
NO WARRANTY NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION. REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES. POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms. free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.> <one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author> Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this If the program is interactive, make it output a short notice like this
when it starts in an interactive mode: when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program. mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names: necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker. `Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989 <signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice Ty Coon, President of Vice
This General Public License does not permit incorporating your program into This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. Public License instead of this License.

View File

@ -1,218 +1,218 @@
# Genericons # Genericons
Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic. Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic.
Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients! Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients!
## Usage ## Usage
To use it, place the `genericons` folder in your stylesheet directory and enqueue the genericons.css file. Now you can create an icon like this: To use it, place the `genericons` folder in your stylesheet directory and enqueue the genericons.css file. Now you can create an icon like this:
``` ```
.my-icon:before { .my-icon:before {
content: '\f101'; content: '\f101';
font: normal 16px/1 'Genericons'; font: normal 16px/1 'Genericons';
display: inline-block; display: inline-block;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
``` ```
This will output a comment icon before every element with the class "my-icon". The `content: '\f101';` part of this CSS is easily copied from the helper tool at http://genericons.com/, or `example.html` in the `font` directory. This will output a comment icon before every element with the class "my-icon". The `content: '\f101';` part of this CSS is easily copied from the helper tool at http://genericons.com/, or `example.html` in the `font` directory.
You can also use the bundled example.css if you'd rather insert the icons using HTML tags. You can also use the bundled example.css if you'd rather insert the icons using HTML tags.
## Building your own Genericons ## Building your own Genericons
In the `source` directory, you'll find all Genericons source icons in SVG format. This will allow you to bake your own flavor of Genericons using a tool such as FontCustom (http://fontcustom.com) or Fontello (http://fontello.com). Perhaps you need more logos than are available in the base Genericons package? Just add those logos and bake your own expanded set. Maybe you need just a few of the icons Genericons provides, but would like to trim the fat? Remove the ones you won't need! In the `source` directory, you'll find all Genericons source icons in SVG format. This will allow you to bake your own flavor of Genericons using a tool such as FontCustom (http://fontcustom.com) or Fontello (http://fontello.com). Perhaps you need more logos than are available in the base Genericons package? Just add those logos and bake your own expanded set. Maybe you need just a few of the icons Genericons provides, but would like to trim the fat? Remove the ones you won't need!
### FontCustom instructions ### FontCustom instructions
FontCustom is a powerful commandline tool which which bakes icon fonts from the SVG source files. It's the tool Genericons is built on, and it provides highly accurate and perfectly crisp icons, *provided all SVGs have the same pixel height*. FontCustom is a powerful commandline tool which which bakes icon fonts from the SVG source files. It's the tool Genericons is built on, and it provides highly accurate and perfectly crisp icons, *provided all SVGs have the same pixel height*.
It's not that hard to use, and once it's installed you'll never think of icon-fonts the same way again. Seriously, you should try it. Icon fonts for everyone! It's not that hard to use, and once it's installed you'll never think of icon-fonts the same way again. Seriously, you should try it. Icon fonts for everyone!
1. Install FontCustom. Follow the instructions on the website: http://fontcustom.com/ 1. Install FontCustom. Follow the instructions on the website: http://fontcustom.com/
2. In the `source` directory from the Genericons download, open the file called `fontcustom.yml` in a text editor. Customize the `font_name` and `css_selector`. 2. In the `source` directory from the Genericons download, open the file called `fontcustom.yml` in a text editor. Customize the `font_name` and `css_selector`.
3. Open a terminal. Browse to the `source` directory. Type `fontcustom compile`. 3. Open a terminal. Browse to the `source` directory. Type `fontcustom compile`.
You'll now receive a brand new subdirectory called `fontcustom-webfont`. Inside here you'll find your very own flavor of Genericons, with only the icons you want, including a handy example page that'll help you copy/paste the necessary glyphs or CSS values. You'll now receive a brand new subdirectory called `fontcustom-webfont`. Inside here you'll find your very own flavor of Genericons, with only the icons you want, including a handy example page that'll help you copy/paste the necessary glyphs or CSS values.
*Please note*: In the source directory, there's a hidden file called `.fontcustom-manifest.json`. This file is auto-generated by the FontCustom tool, and holds codepoints (unicode addresses) for every glyph, so its address doesn't change when you add or remove icons. If you feel the need to "start fresh" with the unicode addresses, you should delete this file. *Please note*: In the source directory, there's a hidden file called `.fontcustom-manifest.json`. This file is auto-generated by the FontCustom tool, and holds codepoints (unicode addresses) for every glyph, so its address doesn't change when you add or remove icons. If you feel the need to "start fresh" with the unicode addresses, you should delete this file.
### Fontello instructions ### Fontello instructions
Fontello is very easy to use. Just drop the SVG files of the icons you want onto their website and download the font. The downside is that Fontello seems to ignore the 16px pixelgrid, so you'll end up with fuzzy icons. Buyer beware. Fontello is very easy to use. Just drop the SVG files of the icons you want onto their website and download the font. The downside is that Fontello seems to ignore the 16px pixelgrid, so you'll end up with fuzzy icons. Buyer beware.
## Notes ## Notes
**Photoshop mockups** **Photoshop mockups**
The `Genericons.ttf` file can be placed in your system fonts folder and used Photoshop or other graphics apps if you like. The `Genericons.ttf` file can be placed in your system fonts folder and used Photoshop or other graphics apps if you like.
If you're using Genericons in your Photoshop mockups, please remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system. If you're using Genericons in your Photoshop mockups, please remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system.
**Pixel grid** **Pixel grid**
Genericons has been designed for a 16x16px grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible blurry. Genericons has been designed for a 16x16px grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible blurry.
**Antialiasing** **Antialiasing**
If you keep intact the `-webkit-font-smoothing: antialiased;` and `-moz-osx-font-smoothing: grayscale;` CSS properties. That'll make the icons look their best possible, in Firefox and WebKit based browsers. If you keep intact the `-webkit-font-smoothing: antialiased;` and `-moz-osx-font-smoothing: grayscale;` CSS properties. That'll make the icons look their best possible, in Firefox and WebKit based browsers.
**optimizeLegibility** **optimizeLegibility**
Note: On Android browsers with version 4.2, 4.3, and probably later, Genericons will simply not show up if you're using the CSS property "text-rendering" set to "optimizeLegibility. Note: On Android browsers with version 4.2, 4.3, and probably later, Genericons will simply not show up if you're using the CSS property "text-rendering" set to "optimizeLegibility.
**Updates** **Updates**
We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended. We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended.
**Base64 encoding** **Base64 encoding**
By default, Genericons ships with a stylesheet that includes a base64 encoded version of the font. This is to sidestep issues with cross-origin requests for fonts, that happen when a stylesheet loads a font that's stored on a different domain or subdomain. This is very common when using caching plugins. By default, Genericons ships with a stylesheet that includes a base64 encoded version of the font. This is to sidestep issues with cross-origin requests for fonts, that happen when a stylesheet loads a font that's stored on a different domain or subdomain. This is very common when using caching plugins.
Base64 encoding comes with a 25% filesize overhead compared to just loading the WOFF file directly. If you know that you won't be loading fonts across domains, or have the ability to edit your server config files to allow it, you can get slightly faster performance by loading Genericons without the base64 encoding. Simply edit `genericons.css` and edit the `@font-face` declaration to match this: Base64 encoding comes with a 25% filesize overhead compared to just loading the WOFF file directly. If you know that you won't be loading fonts across domains, or have the ability to edit your server config files to allow it, you can get slightly faster performance by loading Genericons without the base64 encoding. Simply edit `genericons.css` and edit the `@font-face` declaration to match this:
``` ```
@font-face { @font-face {
font-family: 'Genericons'; font-family: 'Genericons';
src: url('Genericons.woff') format('woff'), src: url('Genericons.woff') format('woff'),
url('Genericons.ttf') format('truetype'), url('Genericons.ttf') format('truetype'),
url('Genericons.svg#genericonsregular') format('svg'); url('Genericons.svg#genericonsregular') format('svg');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
``` ```
## Changelog ## Changelog
**3.4.1** **3.4.1**
* IE8 support restored. * IE8 support restored.
**3.4** **3.4**
* Updated: Update Google Plus icon to new geometric version. This also *retires* the "alt" version, so *please be mindful if you choose to update, make sure you use the `f206` glyph, not the `f218` glyph, as it no longer exists! * Updated: Update Google Plus icon to new geometric version. This also *retires* the "alt" version, so *please be mindful if you choose to update, make sure you use the `f206` glyph, not the `f218` glyph, as it no longer exists!
* New: Added helper rotation classes to the base CSS, thanks to geminorum. Apply `genericon-rotate-90` to rotate 90 degrees, -180, -270. Or `genericon-flip-horizontal` or -vertical. * New: Added helper rotation classes to the base CSS, thanks to geminorum. Apply `genericon-rotate-90` to rotate 90 degrees, -180, -270. Or `genericon-flip-horizontal` or -vertical.
*Again, it is important if you choose to update to this version, make sure you're not using `genericon-googleplus-alt` or unicode character `f218`, as that has been retired! Use `genericon-googleplus` and glyph `f206` instead!* *Again, it is important if you choose to update to this version, make sure you're not using `genericon-googleplus-alt` or unicode character `f218`, as that has been retired! Use `genericon-googleplus` and glyph `f206` instead!*
**3.3.1** **3.3.1**
Security Hardening: Remove Genericons example.html file. Please visit genericons.com instead. Security Hardening: Remove Genericons example.html file. Please visit genericons.com instead.
**3.3** **3.3**
The Open Source release. The Open Source release.
You can now build your own flavors of Genericons with all the SVGs provided. You can now build your own flavors of Genericons with all the SVGs provided.
**3.2** **3.2**
A number of new icons and a couple of quick updates. A number of new icons and a couple of quick updates.
* New: Activity * New: Activity
* New: HTML anchor * New: HTML anchor
* New: Bug * New: Bug
* New: Download * New: Download
* New: Handset * New: Handset
* New: Microphone * New: Microphone
* New: Minus * New: Minus
* New: Plus * New: Plus
* New: Move * New: Move
* New: Rating stars, empty, half, full * New: Rating stars, empty, half, full
* New: Shuffle * New: Shuffle
* New: video camera * New: video camera
* New: Spotify * New: Spotify
* New: Twitch * New: Twitch
* Update: Fixed geometry in Edit icon * Update: Fixed geometry in Edit icon
* Update: Updated Foursquare icon * Update: Updated Foursquare icon
* IE8 bugfix, slipstreamed into this. * IE8 bugfix, slipstreamed into this.
Twitch and Spotify mark the last social icons that will be added to Genericons. Twitch and Spotify mark the last social icons that will be added to Genericons.
Future social icons will have to happen in a separate font. Future social icons will have to happen in a separate font.
**3.1** **3.1**
Genericons is now generated using a commandline tool called FontCustom. This makes it far easier to add new icons to the font, but the switch means the download zip now has a different layout, fonts have different filenames, there's now no .otf font included (but the .ttf should suffice), and the font now has slightly different metrics. I've taken great care to ensure this new version should work as a drop-in replacement, but please be mindful and test carefully if you choose to upgrade. Genericons is now generated using a commandline tool called FontCustom. This makes it far easier to add new icons to the font, but the switch means the download zip now has a different layout, fonts have different filenames, there's now no .otf font included (but the .ttf should suffice), and the font now has slightly different metrics. I've taken great care to ensure this new version should work as a drop-in replacement, but please be mindful and test carefully if you choose to upgrade.
* Per feedback, the baked-in 16px width and height has been removed from the helper CSS. It wasn't really necessary (the glyph itself has these dimensions naturally), and it caused some headaches. * Per feedback, the baked-in 16px width and height has been removed from the helper CSS. It wasn't really necessary (the glyph itself has these dimensions naturally), and it caused some headaches.
* Base64 encoding is now included by default in the helper CSS. This makes it drop-in easy to get Genericons working in Firefox even when using a CDN. * Base64 encoding is now included by default in the helper CSS. This makes it drop-in easy to get Genericons working in Firefox even when using a CDN.
* Title attribute on website tool. * Title attribute on website tool.
* New: Website. * New: Website.
* New: Ellipsis. * New: Ellipsis.
* New: Foursquare. * New: Foursquare.
* New: X-post. * New: X-post.
* New: Sitemap. * New: Sitemap.
* New: Hierarchy. * New: Hierarchy.
* New: Paintbrush. * New: Paintbrush.
* Updated: Show and Hide icons were updated for clarity. * Updated: Show and Hide icons were updated for clarity.
**3.0.3** **3.0.3**
Bunch of updates mostly. Bunch of updates mostly.
* Two new icons, Dropbox and Fullscreen. * Two new icons, Dropbox and Fullscreen.
* Updates to all icons containing an exclamation mark. * Updates to all icons containing an exclamation mark.
* Updates to Image and Quote. * Updates to Image and Quote.
* Nicer "Share" icon. * Nicer "Share" icon.
* Bigger default Linkedin icon. * Bigger default Linkedin icon.
**3.0.2** **3.0.2**
A slew of new stuff and updates. A slew of new stuff and updates.
* Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket. * Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket.
* New generic icons: heart, lock and print. * New generic icons: heart, lock and print.
* New editing icons: code, bold, italic, image * New editing icons: code, bold, italic, image
* New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag. * New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag.
* The hyperlink icon has been updated to be clearer, chunkier. * The hyperlink icon has been updated to be clearer, chunkier.
* The "home" icon has been updated for style, size and clarity. * The "home" icon has been updated for style, size and clarity.
* The email icon has been updated for style and clarity, and to fit with the new subscribe icons. * The email icon has been updated for style and clarity, and to fit with the new subscribe icons.
* The document icon has been updated for style. * The document icon has been updated for style.
* The "pin" icon has been updated for style and clarity. * The "pin" icon has been updated for style and clarity.
* The Twitter icon has been scaled down to fit with the other social icons. * The Twitter icon has been scaled down to fit with the other social icons.
**3.0.1** **3.0.1**
Mostly maintenance. Mostly maintenance.
* Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon. * Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon.
* Added inverse Google+ and Path. * Added inverse Google+ and Path.
* Replaced tabs with spaces in the helper CSS. * Replaced tabs with spaces in the helper CSS.
* Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway. * Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway.
**3.0** **3.0**
Mainly maintenance and a few new icons. Mainly maintenance and a few new icons.
* Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio * Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio
* Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big. * Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big.
* So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu. * So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu.
* Genericons.com now has a mini release blog. * Genericons.com now has a mini release blog.
* The CSS has prettier formatting, props Konstantin Obenland. * The CSS has prettier formatting, props Konstantin Obenland.
**2.09** **2.09**
Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet. Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet.
**2.06** **2.06**
Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox. Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox.
**2.05** **2.05**
Added a bunch of new icons, including upload to cloud, download to cloud, many more. Added a bunch of new icons, including upload to cloud, download to cloud, many more.
**2.0** **2.0**
Initial public release Initial public release

View File

@ -14,7 +14,7 @@
<head> <head>
<meta charset="<?php bloginfo( 'charset' ); ?>"> <meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="http://gmpg.org/xfn/11"> <link rel="profile" href="https://gmpg.org/xfn/11">
<?php if ( is_singular() && pings_open( get_queried_object() ) ) : ?> <?php if ( is_singular() && pings_open( get_queried_object() ) ) : ?>
<link rel="pingback" href="<?php echo esc_url( get_bloginfo( 'pingback_url' ) ); ?>"> <link rel="pingback" href="<?php echo esc_url( get_bloginfo( 'pingback_url' ) ); ?>">
<?php endif; ?> <?php endif; ?>
@ -85,7 +85,7 @@
<?php if ( get_header_image() ) : ?> <?php if ( get_header_image() ) : ?>
<?php <?php
/** /**
* Filter the default twentysixteen custom header sizes attribute. * Filters the default twentysixteen custom header sizes attribute.
* *
* @since Twenty Sixteen 1.0 * @since Twenty Sixteen 1.0
* *

View File

@ -36,7 +36,7 @@ get_header(); ?>
<div class="entry-attachment"> <div class="entry-attachment">
<?php <?php
/** /**
* Filter the default twentysixteen image attachment size. * Filters the default twentysixteen image attachment size.
* *
* @since Twenty Sixteen 1.0 * @since Twenty Sixteen 1.0
* *

View File

@ -19,19 +19,19 @@ function twentysixteen_custom_header_and_background() {
$default_background_color = trim( $color_scheme[0], '#' ); $default_background_color = trim( $color_scheme[0], '#' );
$default_text_color = trim( $color_scheme[3], '#' ); $default_text_color = trim( $color_scheme[3], '#' );
/**
* Filter the arguments used when adding 'custom-background' support in Twenty Sixteen.
*
* @since Twenty Sixteen 1.0
*
* @param array $args {
* An array of custom-background support arguments.
*
* @type string $default-color Default color of the background.
* }
*/
add_theme_support( add_theme_support(
'custom-background', 'custom-background',
/**
* Filters the arguments used when adding 'custom-background' support in Twenty Sixteen.
*
* @since Twenty Sixteen 1.0
*
* @param array $args {
* An array of custom-background support arguments.
*
* @type string $default-color Default color of the background.
* }
*/
apply_filters( apply_filters(
'twentysixteen_custom_background_args', 'twentysixteen_custom_background_args',
array( array(
@ -40,24 +40,24 @@ function twentysixteen_custom_header_and_background() {
) )
); );
/**
* Filter the arguments used when adding 'custom-header' support in Twenty Sixteen.
*
* @since Twenty Sixteen 1.0
*
* @param array $args {
* An array of custom-header support arguments.
*
* @type string $default-text-color Default color of the header text.
* @type int $width Width in pixels of the custom header image. Default 1200.
* @type int $height Height in pixels of the custom header image. Default 280.
* @type bool $flex-height Whether to allow flexible-height header images. Default true.
* @type callable $wp-head-callback Callback function used to style the header image and text
* displayed on the blog.
* }
*/
add_theme_support( add_theme_support(
'custom-header', 'custom-header',
/**
* Filters the arguments used when adding 'custom-header' support in Twenty Sixteen.
*
* @since Twenty Sixteen 1.0
*
* @param array $args {
* An array of custom-header support arguments.
*
* @type string $default-text-color Default color of the header text.
* @type int $width Width in pixels of the custom header image. Default 1200.
* @type int $height Height in pixels of the custom header image. Default 280.
* @type bool $flex-height Whether to allow flexible-height header images. Default true.
* @type callable $wp-head-callback Callback function used to style the header image and text
* displayed on the blog.
* }
*/
apply_filters( apply_filters(
'twentysixteen_custom_header_args', 'twentysixteen_custom_header_args',
array( array(
@ -251,6 +251,7 @@ add_action( 'customize_register', 'twentysixteen_customize_register', 11 );
* Render the site title for the selective refresh partial. * Render the site title for the selective refresh partial.
* *
* @since Twenty Sixteen 1.2 * @since Twenty Sixteen 1.2
*
* @see twentysixteen_customize_register() * @see twentysixteen_customize_register()
* *
* @return void * @return void
@ -263,6 +264,7 @@ function twentysixteen_customize_partial_blogname() {
* Render the site tagline for the selective refresh partial. * Render the site tagline for the selective refresh partial.
* *
* @since Twenty Sixteen 1.2 * @since Twenty Sixteen 1.2
*
* @see twentysixteen_customize_register() * @see twentysixteen_customize_register()
* *
* @return void * @return void
@ -289,7 +291,7 @@ function twentysixteen_customize_partial_blogdescription() {
*/ */
function twentysixteen_get_color_schemes() { function twentysixteen_get_color_schemes() {
/** /**
* Filter the color schemes registered for use with Twenty Sixteen. * Filters the color schemes registered for use with Twenty Sixteen.
* *
* The default schemes include 'default', 'dark', 'gray', 'red', and 'yellow'. * The default schemes include 'default', 'dark', 'gray', 'red', and 'yellow'.
* *

View File

@ -29,7 +29,7 @@ if ( ! function_exists( 'twentysixteen_entry_meta' ) ) :
); );
} }
if ( in_array( get_post_type(), array( 'post', 'attachment' ) ) ) { if ( in_array( get_post_type(), array( 'post', 'attachment' ), true ) ) {
twentysixteen_entry_date(); twentysixteen_entry_date();
} }

View File

@ -1,96 +1,96 @@
/* global colorScheme, Color */ /* global colorScheme, Color */
/** /**
* Add a listener to the Color Scheme control to update other color controls to new values/defaults. * Add a listener to the Color Scheme control to update other color controls to new values/defaults.
* Also trigger an update of the Color Scheme CSS when a color is changed. * Also trigger an update of the Color Scheme CSS when a color is changed.
*/ */
( function( api ) { ( function( api ) {
var cssTemplate = wp.template( 'twentysixteen-color-scheme' ), var cssTemplate = wp.template( 'twentysixteen-color-scheme' ),
colorSchemeKeys = [ colorSchemeKeys = [
'background_color', 'background_color',
'page_background_color', 'page_background_color',
'link_color', 'link_color',
'main_text_color', 'main_text_color',
'secondary_text_color' 'secondary_text_color'
], ],
colorSettings = [ colorSettings = [
'background_color', 'background_color',
'page_background_color', 'page_background_color',
'link_color', 'link_color',
'main_text_color', 'main_text_color',
'secondary_text_color' 'secondary_text_color'
]; ];
api.controlConstructor.select = api.Control.extend( { api.controlConstructor.select = api.Control.extend( {
ready: function() { ready: function() {
if ( 'color_scheme' === this.id ) { if ( 'color_scheme' === this.id ) {
this.setting.bind( 'change', function( value ) { this.setting.bind( 'change', function( value ) {
var colors = colorScheme[value].colors; var colors = colorScheme[value].colors;
// Update Background Color. // Update Background Color.
var color = colors[0]; var color = colors[0];
api( 'background_color' ).set( color ); api( 'background_color' ).set( color );
api.control( 'background_color' ).container.find( '.color-picker-hex' ) api.control( 'background_color' ).container.find( '.color-picker-hex' )
.data( 'data-default-color', color ) .data( 'data-default-color', color )
.wpColorPicker( 'defaultColor', color ); .wpColorPicker( 'defaultColor', color );
// Update Page Background Color. // Update Page Background Color.
color = colors[1]; color = colors[1];
api( 'page_background_color' ).set( color ); api( 'page_background_color' ).set( color );
api.control( 'page_background_color' ).container.find( '.color-picker-hex' ) api.control( 'page_background_color' ).container.find( '.color-picker-hex' )
.data( 'data-default-color', color ) .data( 'data-default-color', color )
.wpColorPicker( 'defaultColor', color ); .wpColorPicker( 'defaultColor', color );
// Update Link Color. // Update Link Color.
color = colors[2]; color = colors[2];
api( 'link_color' ).set( color ); api( 'link_color' ).set( color );
api.control( 'link_color' ).container.find( '.color-picker-hex' ) api.control( 'link_color' ).container.find( '.color-picker-hex' )
.data( 'data-default-color', color ) .data( 'data-default-color', color )
.wpColorPicker( 'defaultColor', color ); .wpColorPicker( 'defaultColor', color );
// Update Main Text Color. // Update Main Text Color.
color = colors[3]; color = colors[3];
api( 'main_text_color' ).set( color ); api( 'main_text_color' ).set( color );
api.control( 'main_text_color' ).container.find( '.color-picker-hex' ) api.control( 'main_text_color' ).container.find( '.color-picker-hex' )
.data( 'data-default-color', color ) .data( 'data-default-color', color )
.wpColorPicker( 'defaultColor', color ); .wpColorPicker( 'defaultColor', color );
// Update Secondary Text Color. // Update Secondary Text Color.
color = colors[4]; color = colors[4];
api( 'secondary_text_color' ).set( color ); api( 'secondary_text_color' ).set( color );
api.control( 'secondary_text_color' ).container.find( '.color-picker-hex' ) api.control( 'secondary_text_color' ).container.find( '.color-picker-hex' )
.data( 'data-default-color', color ) .data( 'data-default-color', color )
.wpColorPicker( 'defaultColor', color ); .wpColorPicker( 'defaultColor', color );
} ); } );
} }
} }
} ); } );
// Generate the CSS for the current Color Scheme. // Generate the CSS for the current Color Scheme.
function updateCSS() { function updateCSS() {
var scheme = api( 'color_scheme' )(), var scheme = api( 'color_scheme' )(),
css, css,
colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors ); colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors );
// Merge in color scheme overrides. // Merge in color scheme overrides.
_.each( colorSettings, function( setting ) { _.each( colorSettings, function( setting ) {
colors[ setting ] = api( setting )(); colors[ setting ] = api( setting )();
} ); } );
// Add additional color. // Add additional color.
// jscs:disable // jscs:disable
colors.border_color = Color( colors.main_text_color ).toCSS( 'rgba', 0.2 ); colors.border_color = Color( colors.main_text_color ).toCSS( 'rgba', 0.2 );
// jscs:enable // jscs:enable
css = cssTemplate( colors ); css = cssTemplate( colors );
api.previewer.send( 'update-color-scheme-css', css ); api.previewer.send( 'update-color-scheme-css', css );
} }
// Update the CSS whenever a color setting is changed. // Update the CSS whenever a color setting is changed.
_.each( colorSettings, function( setting ) { _.each( colorSettings, function( setting ) {
api( setting, function( setting ) { api( setting, function( setting ) {
setting.bind( updateCSS ); setting.bind( updateCSS );
} ); } );
} ); } );
} )( wp.customize ); } )( wp.customize );

View File

@ -1,41 +1,41 @@
/** /**
* Live-update changed settings in real time in the Customizer preview. * Live-update changed settings in real time in the Customizer preview.
*/ */
( function( $ ) { ( function( $ ) {
var style = $( '#twentysixteen-color-scheme-css' ), var style = $( '#twentysixteen-color-scheme-css' ),
api = wp.customize; api = wp.customize;
if ( ! style.length ) { if ( ! style.length ) {
style = $( 'head' ).append( '<style type="text/css" id="twentysixteen-color-scheme-css" />' ) style = $( 'head' ).append( '<style type="text/css" id="twentysixteen-color-scheme-css" />' )
.find( '#twentysixteen-color-scheme-css' ); .find( '#twentysixteen-color-scheme-css' );
} }
// Site title. // Site title.
api( 'blogname', function( value ) { api( 'blogname', function( value ) {
value.bind( function( to ) { value.bind( function( to ) {
$( '.site-title a' ).text( to ); $( '.site-title a' ).text( to );
} ); } );
} ); } );
// Site tagline. // Site tagline.
api( 'blogdescription', function( value ) { api( 'blogdescription', function( value ) {
value.bind( function( to ) { value.bind( function( to ) {
$( '.site-description' ).text( to ); $( '.site-description' ).text( to );
} ); } );
} ); } );
// Add custom-background-image body class when background image is added. // Add custom-background-image body class when background image is added.
api( 'background_image', function( value ) { api( 'background_image', function( value ) {
value.bind( function( to ) { value.bind( function( to ) {
$( 'body' ).toggleClass( 'custom-background-image', '' !== to ); $( 'body' ).toggleClass( 'custom-background-image', '' !== to );
} ); } );
} ); } );
// Color Scheme CSS. // Color Scheme CSS.
api.bind( 'preview-ready', function() { api.bind( 'preview-ready', function() {
api.preview.bind( 'update-color-scheme-css', function( css ) { api.preview.bind( 'update-color-scheme-css', function( css ) {
style.html( css ); style.html( css );
} ); } );
} ); } );
} )( jQuery ); } )( jQuery );

View File

@ -1,213 +1,213 @@
/* global screenReaderText */ /* global screenReaderText */
/** /**
* Theme functions file. * Theme functions file.
* *
* Contains handlers for navigation and widget area. * Contains handlers for navigation and widget area.
*/ */
( function( $ ) { ( function( $ ) {
var body, masthead, menuToggle, siteNavigation, socialNavigation, siteHeaderMenu, resizeTimer; var body, masthead, menuToggle, siteNavigation, socialNavigation, siteHeaderMenu, resizeTimer;
function initMainNavigation( container ) { function initMainNavigation( container ) {
// Add dropdown toggle that displays child menu items. // Add dropdown toggle that displays child menu items.
var dropdownToggle = $( '<button />', { var dropdownToggle = $( '<button />', {
'class': 'dropdown-toggle', 'class': 'dropdown-toggle',
'aria-expanded': false 'aria-expanded': false
} ).append( $( '<span />', { } ).append( $( '<span />', {
'class': 'screen-reader-text', 'class': 'screen-reader-text',
text: screenReaderText.expand text: screenReaderText.expand
} ) ); } ) );
container.find( '.menu-item-has-children > a' ).after( dropdownToggle ); container.find( '.menu-item-has-children > a' ).after( dropdownToggle );
// Toggle buttons and submenu items with active children menu items. // Toggle buttons and submenu items with active children menu items.
container.find( '.current-menu-ancestor > button' ).addClass( 'toggled-on' ); container.find( '.current-menu-ancestor > button' ).addClass( 'toggled-on' );
container.find( '.current-menu-ancestor > .sub-menu' ).addClass( 'toggled-on' ); container.find( '.current-menu-ancestor > .sub-menu' ).addClass( 'toggled-on' );
// Add menu items with submenus to aria-haspopup="true". // Add menu items with submenus to aria-haspopup="true".
container.find( '.menu-item-has-children' ).attr( 'aria-haspopup', 'true' ); container.find( '.menu-item-has-children' ).attr( 'aria-haspopup', 'true' );
container.find( '.dropdown-toggle' ).click( function( e ) { container.find( '.dropdown-toggle' ).click( function( e ) {
var _this = $( this ), var _this = $( this ),
screenReaderSpan = _this.find( '.screen-reader-text' ); screenReaderSpan = _this.find( '.screen-reader-text' );
e.preventDefault(); e.preventDefault();
_this.toggleClass( 'toggled-on' ); _this.toggleClass( 'toggled-on' );
_this.next( '.children, .sub-menu' ).toggleClass( 'toggled-on' ); _this.next( '.children, .sub-menu' ).toggleClass( 'toggled-on' );
// jscs:disable // jscs:disable
_this.attr( 'aria-expanded', _this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); _this.attr( 'aria-expanded', _this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
// jscs:enable // jscs:enable
screenReaderSpan.text( screenReaderSpan.text() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand ); screenReaderSpan.text( screenReaderSpan.text() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand );
} ); } );
} }
initMainNavigation( $( '.main-navigation' ) ); initMainNavigation( $( '.main-navigation' ) );
masthead = $( '#masthead' ); masthead = $( '#masthead' );
menuToggle = masthead.find( '#menu-toggle' ); menuToggle = masthead.find( '#menu-toggle' );
siteHeaderMenu = masthead.find( '#site-header-menu' ); siteHeaderMenu = masthead.find( '#site-header-menu' );
siteNavigation = masthead.find( '#site-navigation' ); siteNavigation = masthead.find( '#site-navigation' );
socialNavigation = masthead.find( '#social-navigation' ); socialNavigation = masthead.find( '#social-navigation' );
// Enable menuToggle. // Enable menuToggle.
( function() { ( function() {
// Return early if menuToggle is missing. // Return early if menuToggle is missing.
if ( ! menuToggle.length ) { if ( ! menuToggle.length ) {
return; return;
} }
// Add an initial values for the attribute. // Add an initial values for the attribute.
menuToggle.add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded', 'false' ); menuToggle.add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded', 'false' );
menuToggle.on( 'click.twentysixteen', function() { menuToggle.on( 'click.twentysixteen', function() {
$( this ).add( siteHeaderMenu ).toggleClass( 'toggled-on' ); $( this ).add( siteHeaderMenu ).toggleClass( 'toggled-on' );
// jscs:disable // jscs:disable
$( this ).add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded', $( this ).add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); $( this ).add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded', $( this ).add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
// jscs:enable // jscs:enable
} ); } );
} )(); } )();
// Fix sub-menus for touch devices and better focus for hidden submenu items for accessibility. // Fix sub-menus for touch devices and better focus for hidden submenu items for accessibility.
( function() { ( function() {
if ( ! siteNavigation.length || ! siteNavigation.children().length ) { if ( ! siteNavigation.length || ! siteNavigation.children().length ) {
return; return;
} }
// Toggle `focus` class to allow submenu access on tablets. // Toggle `focus` class to allow submenu access on tablets.
function toggleFocusClassTouchScreen() { function toggleFocusClassTouchScreen() {
if ( window.innerWidth >= 910 ) { if ( window.innerWidth >= 910 ) {
$( document.body ).on( 'touchstart.twentysixteen', function( e ) { $( document.body ).on( 'touchstart.twentysixteen', function( e ) {
if ( ! $( e.target ).closest( '.main-navigation li' ).length ) { if ( ! $( e.target ).closest( '.main-navigation li' ).length ) {
$( '.main-navigation li' ).removeClass( 'focus' ); $( '.main-navigation li' ).removeClass( 'focus' );
} }
} ); } );
siteNavigation.find( '.menu-item-has-children > a' ).on( 'touchstart.twentysixteen', function( e ) { siteNavigation.find( '.menu-item-has-children > a' ).on( 'touchstart.twentysixteen', function( e ) {
var el = $( this ).parent( 'li' ); var el = $( this ).parent( 'li' );
if ( ! el.hasClass( 'focus' ) ) { if ( ! el.hasClass( 'focus' ) ) {
e.preventDefault(); e.preventDefault();
el.toggleClass( 'focus' ); el.toggleClass( 'focus' );
el.siblings( '.focus' ).removeClass( 'focus' ); el.siblings( '.focus' ).removeClass( 'focus' );
} }
} ); } );
} else { } else {
siteNavigation.find( '.menu-item-has-children > a' ).unbind( 'touchstart.twentysixteen' ); siteNavigation.find( '.menu-item-has-children > a' ).unbind( 'touchstart.twentysixteen' );
} }
} }
if ( 'ontouchstart' in window ) { if ( 'ontouchstart' in window ) {
$( window ).on( 'resize.twentysixteen', toggleFocusClassTouchScreen ); $( window ).on( 'resize.twentysixteen', toggleFocusClassTouchScreen );
toggleFocusClassTouchScreen(); toggleFocusClassTouchScreen();
} }
siteNavigation.find( 'a' ).on( 'focus.twentysixteen blur.twentysixteen', function() { siteNavigation.find( 'a' ).on( 'focus.twentysixteen blur.twentysixteen', function() {
$( this ).parents( '.menu-item' ).toggleClass( 'focus' ); $( this ).parents( '.menu-item' ).toggleClass( 'focus' );
} ); } );
} )(); } )();
// Add the default ARIA attributes for the menu toggle and the navigations. // Add the default ARIA attributes for the menu toggle and the navigations.
function onResizeARIA() { function onResizeARIA() {
if ( window.innerWidth < 910 ) { if ( window.innerWidth < 910 ) {
if ( menuToggle.hasClass( 'toggled-on' ) ) { if ( menuToggle.hasClass( 'toggled-on' ) ) {
menuToggle.attr( 'aria-expanded', 'true' ); menuToggle.attr( 'aria-expanded', 'true' );
} else { } else {
menuToggle.attr( 'aria-expanded', 'false' ); menuToggle.attr( 'aria-expanded', 'false' );
} }
if ( siteHeaderMenu.hasClass( 'toggled-on' ) ) { if ( siteHeaderMenu.hasClass( 'toggled-on' ) ) {
siteNavigation.attr( 'aria-expanded', 'true' ); siteNavigation.attr( 'aria-expanded', 'true' );
socialNavigation.attr( 'aria-expanded', 'true' ); socialNavigation.attr( 'aria-expanded', 'true' );
} else { } else {
siteNavigation.attr( 'aria-expanded', 'false' ); siteNavigation.attr( 'aria-expanded', 'false' );
socialNavigation.attr( 'aria-expanded', 'false' ); socialNavigation.attr( 'aria-expanded', 'false' );
} }
menuToggle.attr( 'aria-controls', 'site-navigation social-navigation' ); menuToggle.attr( 'aria-controls', 'site-navigation social-navigation' );
} else { } else {
menuToggle.removeAttr( 'aria-expanded' ); menuToggle.removeAttr( 'aria-expanded' );
siteNavigation.removeAttr( 'aria-expanded' ); siteNavigation.removeAttr( 'aria-expanded' );
socialNavigation.removeAttr( 'aria-expanded' ); socialNavigation.removeAttr( 'aria-expanded' );
menuToggle.removeAttr( 'aria-controls' ); menuToggle.removeAttr( 'aria-controls' );
} }
} }
// Add 'below-entry-meta' class to elements. // Add 'below-entry-meta' class to elements.
function belowEntryMetaClass( param ) { function belowEntryMetaClass( param ) {
if ( body.hasClass( 'page' ) || body.hasClass( 'search' ) || body.hasClass( 'single-attachment' ) || body.hasClass( 'error404' ) ) { if ( body.hasClass( 'page' ) || body.hasClass( 'search' ) || body.hasClass( 'single-attachment' ) || body.hasClass( 'error404' ) ) {
return; return;
} }
$( '.entry-content' ).find( param ).each( function() { $( '.entry-content' ).find( param ).each( function() {
var element = $( this ), var element = $( this ),
elementPos = element.offset(), elementPos = element.offset(),
elementPosTop = elementPos.top, elementPosTop = elementPos.top,
entryFooter = element.closest( 'article' ).find( '.entry-footer' ), entryFooter = element.closest( 'article' ).find( '.entry-footer' ),
entryFooterPos = entryFooter.offset(), entryFooterPos = entryFooter.offset(),
entryFooterPosBottom = entryFooterPos.top + ( entryFooter.height() + 28 ), entryFooterPosBottom = entryFooterPos.top + ( entryFooter.height() + 28 ),
caption = element.closest( 'figure' ), caption = element.closest( 'figure' ),
figcaption = element.next( 'figcaption' ), figcaption = element.next( 'figcaption' ),
newImg; newImg;
// Add 'below-entry-meta' to elements below the entry meta. // Add 'below-entry-meta' to elements below the entry meta.
if ( elementPosTop > entryFooterPosBottom ) { if ( elementPosTop > entryFooterPosBottom ) {
// Check if full-size images and captions are larger than or equal to 840px. // Check if full-size images and captions are larger than or equal to 840px.
if ( 'img.size-full' === param || '.wp-block-image img' === param ) { if ( 'img.size-full' === param || '.wp-block-image img' === param ) {
// Create an image to find native image width of resized images (i.e. max-width: 100%). // Create an image to find native image width of resized images (i.e. max-width: 100%).
newImg = new Image(); newImg = new Image();
newImg.src = element.attr( 'src' ); newImg.src = element.attr( 'src' );
$( newImg ).on( 'load.twentysixteen', function() { $( newImg ).on( 'load.twentysixteen', function() {
if ( newImg.width >= 840 ) { if ( newImg.width >= 840 ) {
// Check if an image in an image block has a width attribute; if its value is less than 840, return. // Check if an image in an image block has a width attribute; if its value is less than 840, return.
if ( '.wp-block-image img' === param && element.is( '[width]' ) && element.attr( 'width' ) < 840 ) { if ( '.wp-block-image img' === param && element.is( '[width]' ) && element.attr( 'width' ) < 840 ) {
return; return;
} }
element.addClass( 'below-entry-meta' ); element.addClass( 'below-entry-meta' );
if ( caption.hasClass( 'wp-caption' ) ) { if ( caption.hasClass( 'wp-caption' ) ) {
caption.addClass( 'below-entry-meta' ); caption.addClass( 'below-entry-meta' );
caption.removeAttr( 'style' ); caption.removeAttr( 'style' );
} }
if ( figcaption ) { if ( figcaption ) {
figcaption.addClass( 'below-entry-meta' ); figcaption.addClass( 'below-entry-meta' );
} }
} }
} ); } );
} else { } else {
element.addClass( 'below-entry-meta' ); element.addClass( 'below-entry-meta' );
} }
} else { } else {
element.removeClass( 'below-entry-meta' ); element.removeClass( 'below-entry-meta' );
caption.removeClass( 'below-entry-meta' ); caption.removeClass( 'below-entry-meta' );
} }
} ); } );
} }
$( document ).ready( function() { $( document ).ready( function() {
body = $( document.body ); body = $( document.body );
$( window ) $( window )
.on( 'load.twentysixteen', onResizeARIA ) .on( 'load.twentysixteen', onResizeARIA )
.on( 'resize.twentysixteen', function() { .on( 'resize.twentysixteen', function() {
clearTimeout( resizeTimer ); clearTimeout( resizeTimer );
resizeTimer = setTimeout( function() { resizeTimer = setTimeout( function() {
belowEntryMetaClass( 'img.size-full' ); belowEntryMetaClass( 'img.size-full' );
belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' ); belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' );
belowEntryMetaClass( '.wp-block-image img' ); belowEntryMetaClass( '.wp-block-image img' );
}, 300 ); }, 300 );
onResizeARIA(); onResizeARIA();
} ); } );
belowEntryMetaClass( 'img.size-full' ); belowEntryMetaClass( 'img.size-full' );
belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' ); belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' );
belowEntryMetaClass( '.wp-block-image img' ); belowEntryMetaClass( '.wp-block-image img' );
} ); } );
} )( jQuery ); } )( jQuery );

View File

@ -1,326 +1,326 @@
/** /**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/ */
;(function(window, document) { ;(function(window, document) {
/*jshint evil:true */ /*jshint evil:true */
/** version */ /** version */
var version = '3.7.3'; var version = '3.7.3';
/** Preset options */ /** Preset options */
var options = window.html5 || {}; var options = window.html5 || {};
/** Used to skip problem elements */ /** Used to skip problem elements */
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
/** Not all elements can be cloned in IE **/ /** Not all elements can be cloned in IE **/
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
/** Detect whether the browser supports default html5 styles */ /** Detect whether the browser supports default html5 styles */
var supportsHtml5Styles; var supportsHtml5Styles;
/** Name of the expando, to work with multiple documents or to re-shiv one document */ /** Name of the expando, to work with multiple documents or to re-shiv one document */
var expando = '_html5shiv'; var expando = '_html5shiv';
/** The id for the the documents expando */ /** The id for the the documents expando */
var expanID = 0; var expanID = 0;
/** Cached data for each document */ /** Cached data for each document */
var expandoData = {}; var expandoData = {};
/** Detect whether the browser supports unknown elements */ /** Detect whether the browser supports unknown elements */
var supportsUnknownElements; var supportsUnknownElements;
(function() { (function() {
try { try {
var a = document.createElement('a'); var a = document.createElement('a');
a.innerHTML = '<xyz></xyz>'; a.innerHTML = '<xyz></xyz>';
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
supportsHtml5Styles = ('hidden' in a); supportsHtml5Styles = ('hidden' in a);
supportsUnknownElements = a.childNodes.length == 1 || (function() { supportsUnknownElements = a.childNodes.length == 1 || (function() {
// assign a false positive if unable to shiv // assign a false positive if unable to shiv
(document.createElement)('a'); (document.createElement)('a');
var frag = document.createDocumentFragment(); var frag = document.createDocumentFragment();
return ( return (
typeof frag.cloneNode == 'undefined' || typeof frag.cloneNode == 'undefined' ||
typeof frag.createDocumentFragment == 'undefined' || typeof frag.createDocumentFragment == 'undefined' ||
typeof frag.createElement == 'undefined' typeof frag.createElement == 'undefined'
); );
}()); }());
} catch(e) { } catch(e) {
// assign a false positive if detection fails => unable to shiv // assign a false positive if detection fails => unable to shiv
supportsHtml5Styles = true; supportsHtml5Styles = true;
supportsUnknownElements = true; supportsUnknownElements = true;
} }
}()); }());
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/** /**
* Creates a style sheet with the given CSS text and adds it to the document. * Creates a style sheet with the given CSS text and adds it to the document.
* @private * @private
* @param {Document} ownerDocument The document. * @param {Document} ownerDocument The document.
* @param {String} cssText The CSS text. * @param {String} cssText The CSS text.
* @returns {StyleSheet} The style element. * @returns {StyleSheet} The style element.
*/ */
function addStyleSheet(ownerDocument, cssText) { function addStyleSheet(ownerDocument, cssText) {
var p = ownerDocument.createElement('p'), var p = ownerDocument.createElement('p'),
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
p.innerHTML = 'x<style>' + cssText + '</style>'; p.innerHTML = 'x<style>' + cssText + '</style>';
return parent.insertBefore(p.lastChild, parent.firstChild); return parent.insertBefore(p.lastChild, parent.firstChild);
} }
/** /**
* Returns the value of `html5.elements` as an array. * Returns the value of `html5.elements` as an array.
* @private * @private
* @returns {Array} An array of shived element node names. * @returns {Array} An array of shived element node names.
*/ */
function getElements() { function getElements() {
var elements = html5.elements; var elements = html5.elements;
return typeof elements == 'string' ? elements.split(' ') : elements; return typeof elements == 'string' ? elements.split(' ') : elements;
} }
/** /**
* Extends the built-in list of html5 elements * Extends the built-in list of html5 elements
* @memberOf html5 * @memberOf html5
* @param {String|Array} newElements whitespace separated list or array of new element names to shiv * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
* @param {Document} ownerDocument The context document. * @param {Document} ownerDocument The context document.
*/ */
function addElements(newElements, ownerDocument) { function addElements(newElements, ownerDocument) {
var elements = html5.elements; var elements = html5.elements;
if(typeof elements != 'string'){ if(typeof elements != 'string'){
elements = elements.join(' '); elements = elements.join(' ');
} }
if(typeof newElements != 'string'){ if(typeof newElements != 'string'){
newElements = newElements.join(' '); newElements = newElements.join(' ');
} }
html5.elements = elements +' '+ newElements; html5.elements = elements +' '+ newElements;
shivDocument(ownerDocument); shivDocument(ownerDocument);
} }
/** /**
* Returns the data associated to the given document * Returns the data associated to the given document
* @private * @private
* @param {Document} ownerDocument The document. * @param {Document} ownerDocument The document.
* @returns {Object} An object of data. * @returns {Object} An object of data.
*/ */
function getExpandoData(ownerDocument) { function getExpandoData(ownerDocument) {
var data = expandoData[ownerDocument[expando]]; var data = expandoData[ownerDocument[expando]];
if (!data) { if (!data) {
data = {}; data = {};
expanID++; expanID++;
ownerDocument[expando] = expanID; ownerDocument[expando] = expanID;
expandoData[expanID] = data; expandoData[expanID] = data;
} }
return data; return data;
} }
/** /**
* returns a shived element for the given nodeName and document * returns a shived element for the given nodeName and document
* @memberOf html5 * @memberOf html5
* @param {String} nodeName name of the element * @param {String} nodeName name of the element
* @param {Document|DocumentFragment} ownerDocument The context document. * @param {Document|DocumentFragment} ownerDocument The context document.
* @returns {Object} The shived element. * @returns {Object} The shived element.
*/ */
function createElement(nodeName, ownerDocument, data){ function createElement(nodeName, ownerDocument, data){
if (!ownerDocument) { if (!ownerDocument) {
ownerDocument = document; ownerDocument = document;
} }
if(supportsUnknownElements){ if(supportsUnknownElements){
return ownerDocument.createElement(nodeName); return ownerDocument.createElement(nodeName);
} }
if (!data) { if (!data) {
data = getExpandoData(ownerDocument); data = getExpandoData(ownerDocument);
} }
var node; var node;
if (data.cache[nodeName]) { if (data.cache[nodeName]) {
node = data.cache[nodeName].cloneNode(); node = data.cache[nodeName].cloneNode();
} else if (saveClones.test(nodeName)) { } else if (saveClones.test(nodeName)) {
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
} else { } else {
node = data.createElem(nodeName); node = data.createElem(nodeName);
} }
// Avoid adding some elements to fragments in IE < 9 because // Avoid adding some elements to fragments in IE < 9 because
// * Attributes like `name` or `type` cannot be set/changed once an element // * Attributes like `name` or `type` cannot be set/changed once an element
// is inserted into a document/fragment // is inserted into a document/fragment
// * Link elements with `src` attributes that are inaccessible, as with // * Link elements with `src` attributes that are inaccessible, as with
// a 403 response, will cause the tab/window to crash // a 403 response, will cause the tab/window to crash
// * Script elements appended to fragments will execute when their `src` // * Script elements appended to fragments will execute when their `src`
// or `text` property is set // or `text` property is set
return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
} }
/** /**
* returns a shived DocumentFragment for the given document * returns a shived DocumentFragment for the given document
* @memberOf html5 * @memberOf html5
* @param {Document} ownerDocument The context document. * @param {Document} ownerDocument The context document.
* @returns {Object} The shived DocumentFragment. * @returns {Object} The shived DocumentFragment.
*/ */
function createDocumentFragment(ownerDocument, data){ function createDocumentFragment(ownerDocument, data){
if (!ownerDocument) { if (!ownerDocument) {
ownerDocument = document; ownerDocument = document;
} }
if(supportsUnknownElements){ if(supportsUnknownElements){
return ownerDocument.createDocumentFragment(); return ownerDocument.createDocumentFragment();
} }
data = data || getExpandoData(ownerDocument); data = data || getExpandoData(ownerDocument);
var clone = data.frag.cloneNode(), var clone = data.frag.cloneNode(),
i = 0, i = 0,
elems = getElements(), elems = getElements(),
l = elems.length; l = elems.length;
for(;i<l;i++){ for(;i<l;i++){
clone.createElement(elems[i]); clone.createElement(elems[i]);
} }
return clone; return clone;
} }
/** /**
* Shivs the `createElement` and `createDocumentFragment` methods of the document. * Shivs the `createElement` and `createDocumentFragment` methods of the document.
* @private * @private
* @param {Document|DocumentFragment} ownerDocument The document. * @param {Document|DocumentFragment} ownerDocument The document.
* @param {Object} data of the document. * @param {Object} data of the document.
*/ */
function shivMethods(ownerDocument, data) { function shivMethods(ownerDocument, data) {
if (!data.cache) { if (!data.cache) {
data.cache = {}; data.cache = {};
data.createElem = ownerDocument.createElement; data.createElem = ownerDocument.createElement;
data.createFrag = ownerDocument.createDocumentFragment; data.createFrag = ownerDocument.createDocumentFragment;
data.frag = data.createFrag(); data.frag = data.createFrag();
} }
ownerDocument.createElement = function(nodeName) { ownerDocument.createElement = function(nodeName) {
//abort shiv //abort shiv
if (!html5.shivMethods) { if (!html5.shivMethods) {
return data.createElem(nodeName); return data.createElem(nodeName);
} }
return createElement(nodeName, ownerDocument, data); return createElement(nodeName, ownerDocument, data);
}; };
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
'var n=f.cloneNode(),c=n.createElement;' + 'var n=f.cloneNode(),c=n.createElement;' +
'h.shivMethods&&(' + 'h.shivMethods&&(' +
// unroll the `createElement` calls // unroll the `createElement` calls
getElements().join().replace(/[\w\-:]+/g, function(nodeName) { getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
data.createElem(nodeName); data.createElem(nodeName);
data.frag.createElement(nodeName); data.frag.createElement(nodeName);
return 'c("' + nodeName + '")'; return 'c("' + nodeName + '")';
}) + }) +
');return n}' ');return n}'
)(html5, data.frag); )(html5, data.frag);
} }
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/** /**
* Shivs the given document. * Shivs the given document.
* @memberOf html5 * @memberOf html5
* @param {Document} ownerDocument The document to shiv. * @param {Document} ownerDocument The document to shiv.
* @returns {Document} The shived document. * @returns {Document} The shived document.
*/ */
function shivDocument(ownerDocument) { function shivDocument(ownerDocument) {
if (!ownerDocument) { if (!ownerDocument) {
ownerDocument = document; ownerDocument = document;
} }
var data = getExpandoData(ownerDocument); var data = getExpandoData(ownerDocument);
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) { if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
data.hasCSS = !!addStyleSheet(ownerDocument, data.hasCSS = !!addStyleSheet(ownerDocument,
// corrects block display not defined in IE6/7/8/9 // corrects block display not defined in IE6/7/8/9
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' + 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
// adds styling not present in IE6/7/8/9 // adds styling not present in IE6/7/8/9
'mark{background:#FF0;color:#000}' + 'mark{background:#FF0;color:#000}' +
// hides non-rendered elements // hides non-rendered elements
'template{display:none}' 'template{display:none}'
); );
} }
if (!supportsUnknownElements) { if (!supportsUnknownElements) {
shivMethods(ownerDocument, data); shivMethods(ownerDocument, data);
} }
return ownerDocument; return ownerDocument;
} }
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/** /**
* The `html5` object is exposed so that more elements can be shived and * The `html5` object is exposed so that more elements can be shived and
* existing shiving can be detected on iframes. * existing shiving can be detected on iframes.
* @type Object * @type Object
* @example * @example
* *
* // options can be changed before the script is included * // options can be changed before the script is included
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false }; * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
*/ */
var html5 = { var html5 = {
/** /**
* An array or space separated string of node names of the elements to shiv. * An array or space separated string of node names of the elements to shiv.
* @memberOf html5 * @memberOf html5
* @type Array|String * @type Array|String
*/ */
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video', 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
/** /**
* current version of html5shiv * current version of html5shiv
*/ */
'version': version, 'version': version,
/** /**
* A flag to indicate that the HTML5 style sheet should be inserted. * A flag to indicate that the HTML5 style sheet should be inserted.
* @memberOf html5 * @memberOf html5
* @type Boolean * @type Boolean
*/ */
'shivCSS': (options.shivCSS !== false), 'shivCSS': (options.shivCSS !== false),
/** /**
* Is equal to true if a browser supports creating unknown/HTML5 elements * Is equal to true if a browser supports creating unknown/HTML5 elements
* @memberOf html5 * @memberOf html5
* @type boolean * @type boolean
*/ */
'supportsUnknownElements': supportsUnknownElements, 'supportsUnknownElements': supportsUnknownElements,
/** /**
* A flag to indicate that the document's `createElement` and `createDocumentFragment` * A flag to indicate that the document's `createElement` and `createDocumentFragment`
* methods should be overwritten. * methods should be overwritten.
* @memberOf html5 * @memberOf html5
* @type Boolean * @type Boolean
*/ */
'shivMethods': (options.shivMethods !== false), 'shivMethods': (options.shivMethods !== false),
/** /**
* A string to describe the type of `html5` object ("default" or "default print"). * A string to describe the type of `html5` object ("default" or "default print").
* @memberOf html5 * @memberOf html5
* @type String * @type String
*/ */
'type': 'default', 'type': 'default',
// shivs the document according to the specified `html5` object options // shivs the document according to the specified `html5` object options
'shivDocument': shivDocument, 'shivDocument': shivDocument,
//creates a shived element //creates a shived element
createElement: createElement, createElement: createElement,
//creates a shived documentFragment //creates a shived documentFragment
createDocumentFragment: createDocumentFragment, createDocumentFragment: createDocumentFragment,
//extends list of elements //extends list of elements
addElements: addElements addElements: addElements
}; };
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
// expose html5 // expose html5
window.html5 = html5; window.html5 = html5;
// shiv the document // shiv the document
shivDocument(document); shivDocument(document);
if(typeof module == 'object' && module.exports){ if(typeof module == 'object' && module.exports){
module.exports = html5; module.exports = html5;
} }
}(typeof window !== "undefined" ? window : this, document)); }(typeof window !== "undefined" ? window : this, document));

View File

@ -1,26 +1,26 @@
/** /**
* Twenty Sixteen keyboard support for image navigation. * Twenty Sixteen keyboard support for image navigation.
*/ */
( function( $ ) { ( function( $ ) {
$( document ).on( 'keydown.twentysixteen', function( e ) { $( document ).on( 'keydown.twentysixteen', function( e ) {
var url = false; var url = false;
// Left arrow key code. // Left arrow key code.
if ( 37 === e.which ) { if ( 37 === e.which ) {
url = $( '.nav-previous a' ).attr( 'href' ); url = $( '.nav-previous a' ).attr( 'href' );
// Right arrow key code. // Right arrow key code.
} else if ( 39 === e.which ) { } else if ( 39 === e.which ) {
url = $( '.nav-next a' ).attr( 'href' ); url = $( '.nav-next a' ).attr( 'href' );
// Other key code. // Other key code.
} else { } else {
return; return;
} }
if ( url && ! $( 'textarea, input' ).is( ':focus' ) ) { if ( url && ! $( 'textarea, input' ).is( ':focus' ) ) {
window.location = url; window.location = url;
} }
} ); } );
} )( jQuery ); } )( jQuery );

View File

@ -1,36 +1,36 @@
/** /**
* Makes "skip to content" link work correctly in IE9, Chrome, and Opera * Makes "skip to content" link work correctly in IE9, Chrome, and Opera
* for better accessibility. * for better accessibility.
* *
* @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/ * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
*/ */
( function() { ( function() {
var isWebkit = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1, var isWebkit = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1,
isOpera = navigator.userAgent.toLowerCase().indexOf( 'opera' ) > -1, isOpera = navigator.userAgent.toLowerCase().indexOf( 'opera' ) > -1,
isIE = navigator.userAgent.toLowerCase().indexOf( 'msie' ) > -1; isIE = navigator.userAgent.toLowerCase().indexOf( 'msie' ) > -1;
if ( ( isWebkit || isOpera || isIE ) && document.getElementById && window.addEventListener ) { if ( ( isWebkit || isOpera || isIE ) && document.getElementById && window.addEventListener ) {
window.addEventListener( 'hashchange', function() { window.addEventListener( 'hashchange', function() {
var id = location.hash.substring( 1 ), var id = location.hash.substring( 1 ),
element; element;
if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) { if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
return; return;
} }
element = document.getElementById( id ); element = document.getElementById( id );
if ( element ) { if ( element ) {
if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) { if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
element.tabIndex = -1; element.tabIndex = -1;
} }
element.focus(); element.focus();
// Repositions the window on jump-to-anchor to account for admin bar and border height. // Repositions the window on jump-to-anchor to account for admin bar and border height.
window.scrollBy( 0, -53 ); window.scrollBy( 0, -53 );
} }
}, false ); }, false );
} }
} )(); } )();

View File

@ -1,120 +1,125 @@
=== Twenty Sixteen === === Twenty Sixteen ===
Contributors: wordpressdotorg Contributors: wordpressdotorg
Tested up to: 5.0 Tested up to: 5.5
Version: 2.1 Version: 2.2
License: GPLv2 or later License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: one-column, two-columns, right-sidebar, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, flexible-header, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready, blog Tags: one-column, two-columns, right-sidebar, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, flexible-header, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready, blog
== Description == == Description ==
Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere. Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.
* Mobile-first, Responsive Layout * Mobile-first, Responsive Layout
* Custom Colors * Custom Colors
* Custom Header * Custom Header
* Social Links * Social Links
* Post Formats * Post Formats
* The GPL v2.0 or later license. :) Use it to make something cool. * The GPL v2.0 or later license. :) Use it to make something cool.
For more information about Twenty Sixteen please go to https://wordpress.org/support/article/twenty-sixteen/. For more information about Twenty Sixteen please go to https://wordpress.org/support/article/twenty-sixteen/.
== Installation == == Installation ==
1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button. 1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button.
2. Type in Twenty Sixteen in the search form and press the 'Enter' key on your keyboard. 2. Type in Twenty Sixteen in the search form and press the 'Enter' key on your keyboard.
3. Click on the 'Activate' button to use your new theme right away. 3. Click on the 'Activate' button to use your new theme right away.
4. Go to https://wordpress.org/support/article/twenty-sixteen/ for a guide on how to customize this theme. 4. Go to https://wordpress.org/support/article/twenty-sixteen/ for a guide on how to customize this theme.
5. Navigate to Appearance > Customize in your admin panel and customize to taste. 5. Navigate to Appearance > Customize in your admin panel and customize to taste.
== Copyright == == Copyright ==
Twenty Sixteen WordPress Theme, Copyright 2014-2020 WordPress.org Twenty Sixteen WordPress Theme, Copyright 2014-2020 WordPress.org
Twenty Sixteen is distributed under the terms of the GNU GPL Twenty Sixteen is distributed under the terms of the GNU GPL
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or the Free Software Foundation, either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
Twenty Sixteen Theme bundles the following third-party resources: Twenty Sixteen Theme bundles the following third-party resources:
HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas
Licenses: MIT/GPL2 Licenses: MIT/GPL2
Source: https://github.com/aFarkas/html5shiv Source: https://github.com/aFarkas/html5shiv
Genericons icon font, Copyright 2013-2017 Automattic.com Genericons icon font, Copyright 2013-2017 Automattic.com
License: GNU GPL, Version 2 (or later) License: GNU GPL, Version 2 (or later)
Source: http://www.genericons.com Source: http://www.genericons.com
Image used in screenshot.png: A photo by Austin Schmid (https://unsplash.com/schmidy/), licensed under Creative Commons Zero(http://creativecommons.org/publicdomain/zero/1.0/) Image used in screenshot.png: A photo by Austin Schmid (https://unsplash.com/schmidy/), licensed under Creative Commons Zero(http://creativecommons.org/publicdomain/zero/1.0/)
== Changelog == == Changelog ==
= 2.1 = = 2.2 =
* Released: March 31, 2020 * Released: August 11, 2020
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_2.1 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_2.2
= 2.0 = = 2.1 =
* Released: May 7, 2019 * Released: March 31, 2020
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_2.0 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_2.1
= 1.9 = = 2.0 =
* Released: February 21, 2019 * Released: May 7, 2019
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.9 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_2.0
= 1.8 = = 1.9 =
* Released: January 9, 2019 * Released: February 21, 2019
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.8 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.9
= 1.7 = = 1.8 =
* Released: December 19, 2018 * Released: January 9, 2019
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.7 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.8
= 1.6 = = 1.7 =
* Released: December 6, 2018 * Released: December 19, 2018
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.6 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.7
= 1.5 = = 1.6 =
* Released: May 17, 2018 * Released: December 6, 2018
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.5 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.6
= 1.4 = = 1.5 =
* Released: November 14, 2017 * Released: May 17, 2018
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.4 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.5
= 1.3 = = 1.4 =
* Released: August 16, 2016 * Released: November 14, 2017
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.3 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.4
= 1.2 = = 1.3 =
* Released: April 12, 2016 * Released: August 16, 2016
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.2 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.3
= 1.1 = = 1.2 =
* Released: January 6, 2016 * Released: April 12, 2016
https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.1 https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.2
= 1.0 = = 1.1 =
* Released: December 8, 2015 * Released: January 6, 2016
Initial release https://codex.wordpress.org/Twenty_Sixteen_Theme_Changelog#Version_1.1
== Notes == = 1.0 =
* Released: December 8, 2015
Only the default and dark color schemes are accessibility ready.
Initial release
== Notes ==
Only the default and dark color schemes are accessibility ready.

View File

@ -4,7 +4,7 @@ Theme URI: https://wordpress.org/themes/twentysixteen/
Author: the WordPress team Author: the WordPress team
Author URI: https://wordpress.org/ Author URI: https://wordpress.org/
Description: Twenty Sixteen is a modernized take on an ever-popular WordPress layout the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere. Description: Twenty Sixteen is a modernized take on an ever-popular WordPress layout the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.
Version: 2.1 Version: 2.2
Requires at least: 4.4 Requires at least: 4.4
Requires PHP: 5.2.4 Requires PHP: 5.2.4
License: GNU General Public License v2 or later License: GNU General Public License v2 or later

View File

@ -12,7 +12,7 @@
<div class="author-avatar"> <div class="author-avatar">
<?php <?php
/** /**
* Filter the Twenty Sixteen author bio avatar size. * Filters the Twenty Sixteen author bio avatar size.
* *
* @since Twenty Sixteen 1.0 * @since Twenty Sixteen 1.0
* *