@neos21/hatena-blogs
Version:
591 lines (470 loc) • 14.5 kB
CSS
/* ================================================================================
* 要素全般
* ================================================================================ */
/* Responsive: yes */
/* Neo's Normalize */
@import url("../../node_modules/@neos21/neos-normalize/neos-normalize.css");
:root {
--colour-grey-text: #949b98;
--font-size-base: 17px;
--comment-icon-size: 50px;
}
/* blog.css : margin・padding は 0 指定済 */
html {
overflow-x: hidden;
font-size: clamp(var(--font-size-base), 1.7vw, 20px);
}
@media (max-width: 600px) {
html {
word-break: break-all;
}
}
body {
padding: 0 ; /* Google AdSense 自動広告の「アンカー広告」がページを押し下げるのを回避する */
}
/* 等幅フォント */
pre,
code,
textarea {
font-family: var(--nn-font-family-monospace) ; /* blog.css のフォント指定より優先させる */
}
time {
font-family: var(--nn-font-family-sans-serif);
}
h1 {
font-size: 1.6rem;
}
h2 {
font-size: 1.4rem;
}
h3 {
font-size: 1.2rem;
}
pre {
border: 0;
color: #f2f8f8; /* Monokai 風 */
background: #222728;
}
/* 引用用の要素が JS で挿入されるので下の余白の入れ方を調整する */
blockquote {
padding-bottom: 0;
}
blockquote > :last-child {
margin-bottom: var(--nn-space-default);
}
a {
text-decoration: none;
}
/* ================================================================================
* 独自クラス
* ================================================================================ */
/* Google AdSense 用 */
.adsense {
overflow: hidden;
margin: 0 auto;
text-align: center;
}
/* AdSense の要素を上書きする : 通常広告 : リサイズ時に中央揃えになるようにする */
.adsbygoogle { /* ins */
margin-right: auto ;
margin-left: auto ;
}
/* AdSense の要素を上書きする : 自動挿入広告 */
.google-auto-placed {
overflow: hidden;
}
/* ================================================================================
* 共通処理
* ================================================================================ */
/* 非表示 */
#blog-description, /* ブログヘッダの説明文 */
.archive-entry .entry-thumb-link, /* アーカイブ画面の記事サムネイル */
.hatena-asin-detail a[href*="d.hatena.ne.jp/asin/"], /* 「この商品を含むブログ」リンク */
.hatena-citation, /* embed:cite で貼り付けたサイトのドメイン部分 */
.requote-button, /* 引用ブロック末尾に追加される要素 */
.entry-tags-wrapper /* 未使用だがマージンを持った要素 */,
.archive-entry-tags-wrapper /* 未使用だがマージンを持った要素 */,
.entry-footer-section /* 未使用だがマージンを持った要素 */,
#top-box, /* パンくずリスト */
.hatena-module-html .hatena-module-title, /* Sponsored Link */
.hatena-module-search-box .hatena-module-title { /* 検索欄 */
display: none ;
}
/* 縦マージン */
#title,
#top-editarea,
.entry-header,
.entry-footer,
#box2,
#bottom-editarea,
#footer-links {
margin: var(--nn-space-large) 0;
}
/* コードの調整 */
.entry-content a code,
.entry-content em code,
.entry-content strong code,
/* リンク色打ち消し */
.entry-title a,
.hatena-module-archive .hatena-module-title a,
#footer-link-active {
color: inherit;
}
/* 色味調整 */
a:hover strong, a:active strong, strong a:hover, strong a:active,
/* リンク色を打ち消している要素 */
.entry-title a:hover,
.hatena-module-archive .hatena-module-title a:hover,
#footer-link-active:hover {
color: var(--nn-colour-link-hover);
}
/* 灰色小文字 */
.entry-date a,
.archive-date a,
.entry-categories a,
.categories a,
.comment-metadata,
.pager-prev::before,
.pager-next::before {
color: var(--colour-grey-text);
font-size: .85rem;
}
/* リンク内のコード */
a code,
/* 灰色小文字のリンク・フッタリンク */
.entry-date a:hover,
.archive-date a:hover,
.entry-categories a:hover,
.categories a:hover,
#footer-links a {
text-decoration: underline;
}
/* フォントサイズを変えない箇所 */
#title,
.hatena-module,
#footer-links {
font-size: var(--font-size-base);
}
/* インラインコード : blog.css より優先させる */
.entry-content code {
margin: 0 calc(var(--nn-space-tiny) / var(--nn-ratio-4));
border: 1px solid var(--nn-colour-grey-default);
border-radius: var(--nn-border-radius-default);
padding: calc(var(--nn-space-tiny) / var(--nn-ratio-8)) calc(var(--nn-space-tiny) / var(--nn-ratio-2));
color: #f07;
font-size: .94em;
background: var(--nn-colour-grey-light);
}
/* ================================================================================
* コンテナ
* ================================================================================ */
#container {
max-width: 42rem;
margin: var(--nn-space-large) auto;
padding: 0 1rem;
}
#container-inner {
position: relative; /* #header-links 用 */
}
/* ================================================================================
* ヘッダ
* ================================================================================ */
/* 独自ヘッダ
* -------------------------------------------------------------------------------- */
#header-links {
position: absolute;
top: 0;
right: 0;
}
#header-links a,
#footer-links div a {
margin-right: var(--nn-space-tiny);
color: var(--nn-colour-base);
}
#header-links a:hover,
#footer-links div a:hover {
color: var(--colour-grey-text);
}
/* ================================================================================
* 記事ヘッダ
* ================================================================================ */
.entry-header {
position: relative; /* .entry-header-menu 用 */
border-bottom: 1px solid var(--nn-colour-grey-lighter);
padding-bottom: var(--nn-space-tiny);
}
.entry-title { /* h1 */
margin: calc(var(--nn-space-tiny) / var(--nn-ratio-2)) 0;
}
/* 「編集」ボタン */
.entry-header-menu {
position: absolute;
right: 0;
}
/* アーカイブ画面 */
.archive-entry-body {
margin-top: var(--nn-space-tiny); /* .entry-header の margin-bottom を再現する */
border-top: 1px solid var(--nn-colour-grey-lighter);
font-size: var(--font-size-base); /* 省略表示される本文は大きくしない */
}
.entry-categories a:not(:last-child),
.categories a:not(:last-child) {
margin-right: var(--nn-space-tiny);
}
/* ================================================================================
* 記事本文
* ================================================================================ */
/* シンタックスハイライト
* -------------------------------------------------------------------------------- */
.synComment {
color: #8ea1a5;
}
.synPreProc,
.synStatement {
color: #f92672;
}
.synSpecial {
color: #e6db74;
}
.synIdentifier {
color: #a6e22e;
}
.synType {
color: #66d9ef;
}
.synConstant {
color: #ae81ff;
}
/* 目次
* -------------------------------------------------------------------------------- */
.table-of-contents { /* ul */
border-left: calc(var(--nn-space-indent-default) / 2) solid var(--nn-colour-grey-default);
border-radius: var(--nn-border-radius-default);
padding: var(--nn-space-default) calc(var(--nn-space-indent-default) / 2) var(--nn-space-default) calc(var(--nn-space-indent-default) + var(--nn-space-tiny));
background: var(--nn-colour-grey-lighter);
}
.table-of-contents::before {
content: "目次";
display: block;
margin-bottom: var(--nn-space-default);
margin-left: calc(var(--nn-space-indent-default) * -1 - 5px + calc(var(--nn-space-indent-default) / 2)); /* 謎に 5px 分くらいの余白ができているので詰めてから blockquote などと同じだけスペースを開ける */
font-weight: bold;
}
/* 商品リンク
* -------------------------------------------------------------------------------- */
.hatena-asin-detail {
position: relative;
border-radius: var(--nn-border-radius-default);
}
.hatena-asin-detail::before {
position: absolute;
right: var(--nn-space-tiny);
bottom: var(--nn-space-tiny);
font-size: 55px;
font-family: blogicon;
line-height: 1;
/* Amazon */
content: "\f034";
color: rgba(255, 153, 0, .5);
}
.hatena-asin-detail.hatena-rakuten-detail::before {
content: "\f722";
width: 48px;
height: 48px;
border-radius: 50%;
color: rgba(200, 0, 0, .5);
}
.hatena-asin-detail li {
line-height: 1.4;
}
/* その他記事本文中のスタイル調整
* -------------------------------------------------------------------------------- */
/* blog.css : max-width: 100% 指定済 */
.entry-content .hatena-fotolife { /* img・blog.css より優先させる */
display: block;
margin: 0 auto;
}
/* ================================================================================
* 記事フッタ
* ================================================================================ */
.entry-footer {
border-top: 1px solid var(--nn-colour-grey-lighter);
padding-top: var(--nn-space-small);
font-size: var(--font-size-base);
}
/* コメント
* -------------------------------------------------------------------------------- */
.comment-box {
text-align: center; /* .leave-comment-title を中央に配置するため */
}
.comment { /* ul */
padding: 0;
text-align: left; /* .comment-box の指定を打ち消す */
list-style: none;
}
.entry-comment {
padding-left: calc(var(--comment-icon-size) + var(--nn-space-small));
}
/* blog.css : .entry-comment に position: relative 指定済・上書きするため詳細度を合わせる */
.entry-comment .hatena-id-icon {
position: absolute;
top: 0;
left: 0;
width: var(--comment-icon-size);
height: var(--comment-icon-size);
border-radius: 3px; /* blog.css : img.hatena-star-user と同じ */
}
/* 「コメントを書く」リンク */
.leave-comment-title {
border: 1px solid var(--nn-colour-grey-default);
border-radius: var(--nn-border-radius-default);
padding: var(--nn-space-tiny);
color: inherit ;
font-size: var(--font-size-base);
}
.leave-comment-title:hover {
background: var(--nn-colour-grey-lighter);
}
/* ================================================================================
* ページャ
* ================================================================================ */
.pager {
display: grid;
grid-template-areas: "prev next";
grid-template-columns: 1fr 1fr;
gap: var(--nn-space-default);
font-size: var(--font-size-base);
}
.pager-prev {
grid-area: prev;
}
.pager-prev::before {
content: "新しい記事";
display: block;
}
.pager-next {
grid-area: next;
text-align: right;
}
.pager-next::before {
content: "古い記事";
display: block;
}
/* ================================================================================
* サイドバー
* ================================================================================ */
#box2-inner {
display: grid;
grid-template-areas: "box2-html box2-html"
"search-box search-box"
"archive category";
grid-template-columns: 1fr 1fr;
gap: var(--nn-space-default);
border-bottom: 1px solid var(--nn-colour-grey-lighter);
padding-bottom: var(--nn-space-default);
}
.hatena-module-html {
grid-area: box2-html;
}
.hatena-module-search-box {
grid-area: search-box;
}
.hatena-module-archive {
grid-area: archive;
}
.hatena-module-category {
grid-area: category;
}
/* 検索窓
* -------------------------------------------------------------------------------- */
/* blog.css : .search-result-form を参考に・.search-result-form は上書きする */
.hatena-module-search-box .search-form,
.search-result .search-result-form {
position: relative;
border: 1px solid var(--nn-colour-grey-default);
border-radius: var(--nn-border-radius-default);
background: none;
}
.hatena-module-search-box .search-module-input,
.search-result .search-result-input {
width: calc(100% - 20px - 5px); /* .search-module-button の width と right */
height: 30px;
outline: 0;
border: 0;
font-size: 16px; /* iOS での拡大防止 */
color: inherit;
background: none;
}
.hatena-module-search-box .search-module-button,
.search-result .search-result-button {
position: absolute;
top: 5px;
right: 5px;
width: 20px;
height: 20px;
outline: 0;
border: 0;
background: transparent url("https://cdn.blog.st-hatena.com/images/theme/search.png") no-repeat 100%;
text-indent: -9999px;
opacity: .5;
cursor: pointer;
}
.hatena-module-search-box .search-module-button:hover,
.search-result .search-result-button:hover {
opacity: .85;
}
/* アーカイブ・カテゴリ
* -------------------------------------------------------------------------------- */
.hatena-module-archive .hatena-module-title,
.hatena-module-category .hatena-module-title {
margin: 0 0 var(--nn-space-small);
}
.hatena-module-archive .hatena-module-body,
.hatena-module-category .hatena-module-body {
overflow-y: auto;
height: 60vh;
min-height: 15rem;
}
.hatena-module-archive .hatena-urllist,
.hatena-module-category .hatena-urllist {
margin: 0;
font-size: var(--font-size-base);
}
.hatena-module-archive .hatena-module-body .archive-module-button { /* blog.css より優先させる */
display: inline-block;
width: 1rem;
text-align: center;
}
.hatena-module-archive .hatena-module-body .archive-module-month {
margin-left: 2rem;
}
.hatena-module-category .hatena-urllist {
padding: 0;
line-height: 1.5; /* blog.css : .hatena-urllist .archive-module-year と同じ */
list-style: none;
}
/* ================================================================================
* フッタ
* ================================================================================ */
/* 独自フッタ
* -------------------------------------------------------------------------------- */
#footer-links ul {
padding: 0;
list-style: none;
}
#footer-links li {
display: inline;
}
#footer-links li:not(:last-child) {
margin-right: var(--nn-space-small);
}
#footer-links ul:first-child li:first-child a {
font-weight: bold;
}
#footer-links ul:first-child li:first-child::after {
content: ":";
margin-left: var(--nn-space-small);
}
#footer-links div {
text-align: right;
}