{"id":15338,"date":"2026-10-16T11:47:48","date_gmt":"2026-10-16T02:47:48","guid":{"rendered":"https:\/\/code-plus.jp\/gp\/?page_id=15338"},"modified":"2026-10-19T20:24:37","modified_gmt":"2026-10-19T11:24:37","slug":"css-diff-extractor","status":"publish","type":"page","link":"https:\/\/code-plus.jp\/gp\/tools\/css-diff-extractor\/","title":{"rendered":"CSS\u5dee\u5206\u62bd\u51fa\u30c4\u30fc\u30eb\uff5c\u5171\u901a\u90e8\u5206\u3068A\u30fbB\u306e\u5dee\u5206\u3092\u51fa\u529b"},"content":{"rendered":"<!-- \u0f3b\u273f\ud835\udc0f\ud835\udc00\ud835\udc06\ud835\udc04-CSS\u5dee\u5206\u62bd\u51fa\u30c4\u30fc\u30eb \uff08\/tools\/css-diff-extractor\/\uff09\r\n* \u30da\u30fc\u30b8\u30af\u30e9\u30b9\uff1apg-saracnvtvkaa bg-hackingGate\uff08WordPress\u304c\u5c0f\u6587\u5b57\u3067\u3057\u304b\u51fa\u529b\u3067\u304d\u306a\u3044\u305f\u3081\uff09\r\n* \u8b58\u5225\u30b3\u30fc\u30c9\uff1acnvtVkaA\uff08section\/dept \u306e\u30af\u30e9\u30b9\u540d, \u753b\u50cf\u540d\u306b\u4f7f\u7528\uff09\r\n\u0fd0\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u2740\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u0f04 -->\r\n<div class=\"pg-saracnvtvkaa bg-hackingGate\">\r\n\r\n<!-- \u0f3b.mezzala\uff08\u4f59\u767d\u8abf\u6574\uff1apage\u4e0a\uff09\u0f3a -->\r\n<hr class=\"spacer-mezzala\" \/>\r\n\r\n<hr id=\"ch-CssDiff\" anchor \/>\r\n  <header class=\"page-header mx-auto\">\r\n    <!-- \u2756\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8 --><div><!-- breadcrumb.php -->\n<style>\n\/* \u2756breadcrumb.leckermaul\uff08\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8\uff09\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u0f1a\u0f36\u22b0\u27e1\u22b1\u0f36\u0f1a\u0f3a*\/\n.zaratan .breadcrumb.leckermaul {\n\twidth: 100%;\n\tmax-width: calc(var(--zvw,1vw) * 92.5);\n\tmargin-inline: auto;\n}\n\n.zaratan .breadcrumb.leckermaul :is(ul, ol) {\n\tmin-height: 3rem;\n\tline-height: initial;\n\tfont-size: 0;\n\tletter-spacing: 0;\n\toverflow: hidden;\n}\n\n.zaratan .breadcrumb.leckermaul li {\n\tdisplay: inline;\n\tline-height: 1.6;\n\tfont-size: clamp(0.775rem, calc(0.775rem + ((1vw - 0.225rem) * 0.1563)), 0.8750rem);\n}\n\n.zaratan .breadcrumb.leckermaul li>*,\n.zaratan .breadcrumb.leckermaul li::before {\n\tposition: relative;\n\ttop: 0.125em;\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n.zaratan .breadcrumb.leckermaul a {\n\tdisplay: inline;\n\tcolor: var(--c-base-300, hsl(224, 6%, 74%));\n\tmargin-right: .5em;\n}\n\n.zaratan .breadcrumb.leckermaul li:nth-of-type(n+2) a {\n\tmargin-left: .5em;\n}\n\n\/* \u73fe\u5728\u306e\u30da\u30fc\u30b8\uff08\u30ea\u30f3\u30af\u306a\u3057\u3002<span aria-current=\"page\">\uff09\n   \u203b a \u3068\u540c\u3058\u4f59\u767d\u30fb\u8272\u3002\u30af\u30ea\u30c3\u30af\u3067\u304d\u306a\u3044\u8981\u7d20\u306a\u306e\u3067 pointer-events \u306f\u4e0d\u8981 *\/\n.zaratan .breadcrumb.leckermaul [aria-current=\"page\"] {\n\tdisplay: inline;\n\tmargin-inline: .5em;\n\tcolor: var(--c-base-300, hsl(224, 6%, 74%));\n}\n\n@media (any-hover:hover) {\n\t.zaratan .breadcrumb.leckermaul a:hover {\n\t\tcolor: var(--c-base-300, hsl(224, 6%, 74%));\n\t}\n}\n\n\/* .ma-home *\/\n.zaratan .breadcrumb.leckermaul .ma-home {\n\tvertical-align: top;\n}\n\n\/* .separator *\/\n.zaratan .breadcrumb.leckermaul li:nth-of-type(n+2)::before,\n.zaratan .breadcrumb.leckermaul.chevron-right li:nth-of-type(n+2)::before {\n\tcontent: \">\";\n\tcolor: var(--c-base-300, hsl(224, 6%, 74%))\n}\n\n.zaratan .breadcrumb.leckermaul.slash li:nth-of-type(n+2)::before {\n\tcontent: \"\/\";\n}\n\n.zaratan .breadcrumb.leckermaul.trigon-bullet li:nth-of-type(n+2)::before {\n\tcontent: \"\u2023\";\n}\n<\/style>\n\n\n<nav class=\"breadcrumb leckermaul py-0.5r mx-auto\" aria-label=\"\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8\">\n  <ul class=\"breadcrumb-wrapper\">\n    <!-- \u30c8\u30c3\u30d7\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\u3092\u8868\u793a -->\n    <li><a href=\"https:\/\/code-plus.jp\/gp\/\"><i><\/i>\u30c8\u30c3\u30d7<\/a><\/li>\n\n          <!-- \u56fa\u5b9a\u30da\u30fc\u30b8\uff08\u305d\u308c\u4ee5\u5916\uff09\uff1a \u5148\u7956\u30da\u30fc\u30b8\u540d\u3068\u3001\u73fe\u5728\u306e\u30da\u30fc\u30b8\u540d\u3092\u8868\u793a -->\n      <li><a href=\"https:\/\/code-plus.jp\/gp\/tools\/\">Web\u30c4\u30fc\u30eb\u4e00\u89a7\uff5cHTML\/CSS\u30fb\u6587\u66f8\u7de8\u96c6\u30fb\u753b\u50cf\u7de8\u96c6<\/a><\/li><li class=\"current_page_item\"><span aria-current=\"page\">CSS\u5dee\u5206\u62bd\u51fa\u30c4\u30fc\u30eb\uff5c\u5171\u901a\u90e8\u5206\u3068A\u30fbB\u306e\u5dee\u5206\u3092\u51fa\u529b<\/span><\/li>    <!-- \/\/\/if (is_page()) -->\n\n  <\/ul>\n<\/nav><\/div>\r\n  <\/header><!-- \/\/\/.inheader -->\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\r\n  <section class=\"sect-cnvtVkaA-Intro\" style=\"contain-intrinsic-size:800px;\">\r\n    <header class=\"section__inheader mx-auto\">\r\n      <div class=\"hgroup-wrapper d-iblock mb-0.5r\">\r\n        <h1 class=\"fz-xxl hdg-page mb-0.25pc\"><span>CSS\u5dee\u5206\u62bd\u51fa\u30c4\u30fc\u30eb\uff5c\u5171\u901a\u90e8\u5206\u3068A\u30fbB\u306e\u5dee\u5206\u3092\u51fa\u529b<\/span><\/h1>\r\n        <p class=\"page-foreword fz-ss\">\r\n          2\u3064\u306e CSS \u3092\u300c\u30bb\u30ec\u30af\u30bf \uff0b \u30d7\u30ed\u30d1\u30c6\u30a3 \uff0b \u5024\u300d\u306e\u5358\u4f4d\u3067\u7a81\u304d\u5408\u308f\u305b\u3001\u5171\u901a\u90e8\u5206\u3068\u3001\u305d\u308c\u305e\u308c\u306b\u3060\u3051\u6b8b\u308b\u5dee\u5206\u306e3\u3064\u306b\u5206\u3051\u3066\u51fa\u529b\u3002SP\u7528\u30fbPC\u7528\u306b\u5206\u3051\u305f CSS \u306e\u91cd\u8907\u6574\u7406\u306b\u3002\r\n        <\/p>\r\n      <\/div><!-- \/\/\/.hgroup -->\r\n\r\n      <a class=\"fl-right badge is-outlined is-gray fz-xs bdrs-0.25r\" href=\"#ch-Explanation\">\r\n        <i class=\"icon mas ma-help\"><\/i>&nbsp;<span>\u4f7f\u3044\u65b9<\/span>\r\n      <\/a>\r\n    <\/header><!-- \/\/\/.inheader -->\r\n  <\/section>\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\r\n  <hr id=\"ch-Converter\" anchor \/>\r\n  <section class=\"sect-cnvtVkaA-Converter\" style=\"contain-intrinsic-size:1000px;\">\r\n    <div class=\"section__interior fxd-row mx-auto\">\r\n      <figure class=\"section__leftlane\">\r\n        <div class=\"hgroup-wrapper\">\r\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bc\u6bd4\u8f03\u3059\u308b CSS \u3092\u8cbc\u308a\u4ed8\u3051\uff08\u30d5\u30a1\u30a4\u30eb\u306e\u30c9\u30ed\u30c3\u30d7\u3082\u53ef\uff09<\/span><\/h3>\r\n        <\/div><!-- \/\/\/.hgroup -->\r\n\r\n        <!-- CSS A -->\r\n        <div class=\"chest-wrapper relatived\">\r\n          <label class=\"mb-0.25r\">\r\n            <b class=\"badge is-solided is-primary fz-xxs\">A<\/b>\r\n            <input type=\"text\" id=\"fileNameA\" class=\"input w-14e fz-xs ml-0.25r\" value=\"a.css\" \/>\r\n            <a href=\"javascript:void(0);\" id=\"pickA\" class=\"badge is-outlined is-gray fz-xxs ml-0.25r\"><span>\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e<\/span><\/a>\r\n          <\/label>\r\n          <textarea id=\"cssInputA\" class=\"textarea\" style=\"height:14pc;\" placeholder=\"A \u306e CSS\uff08\u4f8b\uff1aSP\u7528\uff09\u3092\u8cbc\u308a\u4ed8\u3051\u3001\u307e\u305f\u306f .css \u30d5\u30a1\u30a4\u30eb\u3092\u30c9\u30ed\u30c3\u30d7\"><\/textarea>\r\n          <input type=\"file\" id=\"fileInputA\" accept=\".css,text\/css,text\/plain\" style=\"display:none;\" \/>\r\n        <\/div><!-- \/\/\/.chest -->\r\n\r\n        <!-- CSS B -->\r\n        <div class=\"chest-wrapper relatived mt-1r\">\r\n          <label class=\"mb-0.25r\">\r\n            <b class=\"badge is-solided is-primary fz-xxs\">B<\/b>\r\n            <input type=\"text\" id=\"fileNameB\" class=\"input w-14e fz-xs ml-0.25r\" value=\"b.css\" \/>\r\n            <a href=\"javascript:void(0);\" id=\"pickB\" class=\"badge is-outlined is-gray fz-xxs ml-0.25r\"><span>\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e<\/span><\/a>\r\n          <\/label>\r\n          <textarea id=\"cssInputB\" class=\"textarea\" style=\"height:14pc;\" placeholder=\"B \u306e CSS\uff08\u4f8b\uff1aPC\u7528\uff09\u3092\u8cbc\u308a\u4ed8\u3051\u3001\u307e\u305f\u306f .css \u30d5\u30a1\u30a4\u30eb\u3092\u30c9\u30ed\u30c3\u30d7\"><\/textarea>\r\n          <input type=\"file\" id=\"fileInputB\" accept=\".css,text\/css,text\/plain\" style=\"display:none;\" \/>\r\n        <\/div><!-- \/\/\/.chest -->\r\n\r\n        <ins id=\"errorMessage\"><\/ins>\r\n\r\n        <!-- \u30aa\u30d7\u30b7\u30e7\u30f3 -->\r\n        <div class=\"colgroup w-full mt-1r\">\r\n          <h4 class=\"title is-outlined fz-sm\">\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a<\/h4>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"optLooseValues\" checked>\u5024\u306e\u8868\u8a18\u3086\u308c\u3092\u540c\u3058\u3068\u307f\u306a\u3059\uff08.5 \u3068 0.5\u300116\u9032\u30ab\u30e9\u30fc\u306e\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3001\u7a7a\u767d\uff09<\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"optKeepComments\" checked>\u30eb\u30fc\u30eb\u306e\u76f4\u524d\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u51fa\u529b\u306b\u6b8b\u3059<\/label>\r\n        <\/div><!-- \/\/\/.colgroup -->\r\n      <\/figure><!-- \/\/\/.leftlane -->\r\n\r\n      <figure class=\"section__centerlane\">\r\n        <aside class=\"sticky-sidebar fxd-column pc-center\" style=\"height:30pc;\">\r\n          <button type=\"button\" id=\"compareBtn\" class=\"button is-solided is-primary\"><span>\u6bd4\u8f03&nbsp;\u00bb<\/span><\/button>\r\n        <\/aside>\r\n      <\/figure><!-- \/\/\/.centerlane -->\r\n\r\n      <figure class=\"section__rightlane\">\r\n        <!-- \u5171\u901a\u90e8\u5206 -->\r\n        <div class=\"chest-wrapper relatived\">\r\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bc\u5171\u901a\u90e8\u5206\uff1a<b id=\"nameCommon\">intersection.css<\/b><\/span><\/h3>\r\n          <p class=\"rowgroup mb-0.25r\">\r\n            <a href=\"javascript:void(0);\" class=\"badge is-outlined is-gray fz-xxs\" data-copy=\"outCommon\"><span>\u30b3\u30d4\u30fc<\/span><\/a>\r\n            <a href=\"javascript:void(0);\" class=\"badge is-outlined is-gray fz-xxs ml-0.5r\" data-download=\"outCommon\" data-name=\"nameCommon\"><span>\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/span><\/a>\r\n          <\/p>\r\n          <textarea class=\"textarea\" id=\"outCommon\" style=\"height:13pc;\" placeholder=\"A \u3068 B \u3067\u5b8c\u5168\u306b\u540c\u3058\u30eb\u30fc\u30eb\u30fb\u5ba3\u8a00\u304c\u3053\u3053\u306b\u51fa\u529b\u3055\u308c\u307e\u3059\" readonly><\/textarea>\r\n        <\/div><!-- \/\/\/.chest -->\r\n\r\n        <!-- A \u306e\u5dee\u5206 -->\r\n        <div class=\"chest-wrapper relatived mt-1r\">\r\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bcA \u306e\u5dee\u5206\uff1a<b id=\"nameDiffA\">a.diff.css<\/b><\/span><\/h3>\r\n          <p class=\"rowgroup mb-0.25r\">\r\n            <a href=\"javascript:void(0);\" class=\"badge is-outlined is-gray fz-xxs\" data-copy=\"outDiffA\"><span>\u30b3\u30d4\u30fc<\/span><\/a>\r\n            <a href=\"javascript:void(0);\" class=\"badge is-outlined is-gray fz-xxs ml-0.5r\" data-download=\"outDiffA\" data-name=\"nameDiffA\"><span>\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/span><\/a>\r\n          <\/p>\r\n          <textarea class=\"textarea\" id=\"outDiffA\" style=\"height:13pc;\" placeholder=\"A \u306b\u3060\u3051\u3042\u308b\uff08\u307e\u305f\u306f\u5024\u304c\u9055\u3046\uff09\u5ba3\u8a00\u304c\u3053\u3053\u306b\u51fa\u529b\u3055\u308c\u307e\u3059\" readonly><\/textarea>\r\n        <\/div><!-- \/\/\/.chest -->\r\n\r\n        <!-- B \u306e\u5dee\u5206 -->\r\n        <div class=\"chest-wrapper relatived mt-1r\">\r\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bcB \u306e\u5dee\u5206\uff1a<b id=\"nameDiffB\">b.diff.css<\/b><\/span><\/h3>\r\n          <p class=\"rowgroup mb-0.25r\">\r\n            <a href=\"javascript:void(0);\" class=\"badge is-outlined is-gray fz-xxs\" data-copy=\"outDiffB\"><span>\u30b3\u30d4\u30fc<\/span><\/a>\r\n            <a href=\"javascript:void(0);\" class=\"badge is-outlined is-gray fz-xxs ml-0.5r\" data-download=\"outDiffB\" data-name=\"nameDiffB\"><span>\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/span><\/a>\r\n          <\/p>\r\n          <textarea class=\"textarea\" id=\"outDiffB\" style=\"height:13pc;\" placeholder=\"B \u306b\u3060\u3051\u3042\u308b\uff08\u307e\u305f\u306f\u5024\u304c\u9055\u3046\uff09\u5ba3\u8a00\u304c\u3053\u3053\u306b\u51fa\u529b\u3055\u308c\u307e\u3059\" readonly><\/textarea>\r\n        <\/div><!-- \/\/\/.chest -->\r\n\r\n        <ins id=\"successMessage\"><\/ins>\r\n        <div id=\"summaryArea\"><\/div>\r\n      <\/figure><!-- \/\/\/.rightlane -->\r\n    <\/div><!-- \/\/\/.interior.fxd-row -->\r\n  <\/section>\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\r\n  <hr id=\"ch-Explanation\" anchor \/>\r\n  <section class=\"sect-cnvtVkaA-Explanation pt-3r\" style=\"contain-intrinsic-size:1000px;\">\r\n    <div class=\"section__interior mx-auto scroll-fadeIn\">\r\n      <div class=\"box is-broad is-solided c-base-900\">\r\n        <h4 class=\"hdg-explanation fz-md mb-0.25pc\">\u4f7f\u3044\u65b9<\/h4>\r\n        <p class=\"fz-ss mb-1r\">\r\n          2\u3064\u306e CSS \u3092\u8cbc\u308a\u4ed8\u3051\u3066\u300c\u6bd4\u8f03 \u00bb\u300d\u3092\u62bc\u3059\u3068\u3001\u5171\u901a\u90e8\u5206\u3068\u3001A\u30fbB \u305d\u308c\u305e\u308c\u306e\u5dee\u5206\u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002\u51e6\u7406\u306f\u3059\u3079\u3066\u30d6\u30e9\u30a6\u30b6\u5185\u3067\u5b8c\u7d50\u3057\u3001\u5165\u529b\u5185\u5bb9\u304c\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u4fe1\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\r\n        <\/p>\r\n\r\n        <h5 class=\"fz-ss hdg-explanation mb-0.25pc mt-1r\">\ud83d\udca1 \u6bd4\u8f03\u306e\u30eb\u30fc\u30eb<\/h5>\r\n        <ul class=\"fz-ss mb-1r\">\r\n          <li><b class=\"fw-600\">\u30eb\u30fc\u30eb\u306e\u5bfe\u5fdc\u3065\u3051\uff1a<\/b> \u540c\u3058 @media \u306e\u4e2d\u3067\u3001\u540c\u3058\u30bb\u30ec\u30af\u30bf\u306e\u30eb\u30fc\u30eb\u3092\u5bfe\u5fdc\u3055\u305b\u307e\u3059\uff08\u30bb\u30ec\u30af\u30bf\u306e\u9806\u5e8f\u9055\u3044\u30fb\u91cd\u8907\u30fb\u7a7a\u767d\u306e\u9055\u3044\u306f\u540c\u3058\u3068\u307f\u306a\u3057\u307e\u3059\uff09<\/li>\r\n          <li><b class=\"fw-600\">\u5ba3\u8a00\u306e\u7a81\u304d\u5408\u308f\u305b\uff1a<\/b> \u5bfe\u5fdc\u3057\u305f\u30eb\u30fc\u30eb\u306e\u4e2d\u3067\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u5024\u304c\u3069\u3061\u3089\u3082\u540c\u3058\u5ba3\u8a00\u3092\u300c\u5171\u901a\u300d\u306b\u3057\u307e\u3059\u3002\u6b8b\u308a\u306f A\u30fbB \u305d\u308c\u305e\u308c\u306e\u5dee\u5206\u306b\u306a\u308a\u307e\u3059<\/li>\r\n          <li><b class=\"fw-600\">\u540c\u3058\u30bb\u30ec\u30af\u30bf\u304c\u8907\u6570\u56de\u3042\u308b\u5834\u5408\uff1a<\/b> 1\u56de\u76ee\u3069\u3046\u3057\u30012\u56de\u76ee\u3069\u3046\u3057\u3092\u5bfe\u5fdc\u3055\u305b\u307e\u3059\uff08\u307e\u3068\u3081\u3066\u4e26\u3079\u66ff\u3048\u308b\u3053\u3068\u306f\u3057\u307e\u305b\u3093\uff09<\/li>\r\n          <li><b class=\"fw-600\">\u7247\u65b9\u306b\u3057\u304b\u306a\u3044\u30eb\u30fc\u30eb\uff1a<\/b> \u30eb\u30fc\u30eb\u3054\u3068\u3001\u305d\u306e\u5074\u306e\u5dee\u5206\u306b\u51fa\u529b\u3055\u308c\u307e\u3059<\/li>\r\n        <\/ul>\r\n\r\n        <h5 class=\"fz-ss hdg-explanation mb-0.25pc\">\ud83c\udfaf \u51fa\u529b\u306e\u4f7f\u3044\u65b9<\/h5>\r\n        <ul class=\"fz-ss mb-1r\">\r\n          <li>\u5171\u901a\u90e8\u5206\u306f\u5e38\u306b\u8aad\u307f\u8fbc\u307f\u3001A\u30fbB \u306e\u5dee\u5206\u306f\u305d\u308c\u305e\u308c\u306e\u6761\u4ef6\uff08\u30e1\u30c7\u30a3\u30a2\u30af\u30a8\u30ea\uff09\u3067\u3001\u5171\u901a\u90e8\u5206\u3088\u308a\u5f8c\u308d\u306b\u8aad\u307f\u8fbc\u307f\u307e\u3059<\/li>\r\n          <li>\u5171\u901a\u3068\u5dee\u5206\u306f\u540c\u3058\u9806\u5e8f\u3067\u51fa\u529b\u3055\u308c\u307e\u3059\u304c\u3001\u540c\u3058\u8a73\u7d30\u5ea6\u3067\u540c\u3058\u8981\u7d20\u306b\u52b9\u304f\u5225\u306e\u30eb\u30fc\u30eb\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u8aad\u307f\u8fbc\u307f\u9806\u3067\u7d50\u679c\u304c\u5909\u308f\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059<\/li>\r\n        <\/ul>\r\n\r\n        <h5 class=\"fz-ss hdg-explanation mb-0.25pc\">\u26a0\ufe0f \u6ce8\u610f\u4e8b\u9805<\/h5>\r\n        <ul class=\"fz-ss\">\r\n          <li><b class=\"fw-600\">\u540c\u3058\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u5171\u901a\u3068\u5dee\u5206\u306b\u5206\u304b\u308c\u305f\u3068\u304d\uff1a<\/b> \u5143\u306e\u30ab\u30b9\u30b1\u30fc\u30c9\u9806\u3068\u5909\u308f\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u753b\u9762\u4e0b\u306b\u8b66\u544a\u3092\u8868\u793a\u3057\u307e\u3059<\/li>\r\n          <li><b class=\"fw-600\">@media \u306a\u3069\u306e\u5165\u308c\u5b50\uff1a<\/b> @media\u30fb@supports\u30fb@layer \u306e\u4e2d\u3082\u3001\u6761\u4ef6\u3054\u3068\u306b\u5225\u3005\u306b\u6bd4\u8f03\u3057\u307e\u3059\u3002@keyframes \u306f\u4e2d\u8eab\u3054\u3068\u307e\u3068\u3081\u3066\u6bd4\u8f03\u3057\u307e\u3059<\/li>\r\n          <li><b class=\"fw-600\">\u30b3\u30e1\u30f3\u30c8\uff1a<\/b> \u30eb\u30fc\u30eb\u306e\u76f4\u524d\u306b\u3042\u308b\u30b3\u30e1\u30f3\u30c8\u3060\u3051\u3092\u3001\u305d\u306e\u30eb\u30fc\u30eb\u3068\u4e00\u7dd2\u306b\u51fa\u529b\u3057\u307e\u3059\uff08\u5ba3\u8a00\u306e\u9593\u306e\u30b3\u30e1\u30f3\u30c8\u306f\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\uff09<\/li>\r\n        <\/ul>\r\n      <\/div>\r\n    <\/div><!-- \/\/\/.interior -->\r\n  <\/section><!-- \/\/\/.section -->\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\r\n  <hr id=\"ch-Relation\" anchor \/>\r\n  <section class=\"sect-cnvtVkaA-Relation\" style=\"contain-intrinsic-size:1000px;\">\r\n    <div class=\"section__interior mx-auto scroll-fadeIn\">\r\n      <div class=\"hgroup-wrapper mb-0.5pc\">\r\n        <h5 class=\"hdg-relation fz-rg\"><span>\u95a2\u9023\u30c4\u30fc\u30eb<\/span><\/h5>\r\n      <\/div><!-- \/\/\/.hgroup -->\r\n\r\n      <ul class=\"shelf-wrapper_pc shelfA\" data-cols_pc=\"2\">\r\n        <li class=\"slide\">\r\n          <a href=\"https:\/\/code-plus.jp\/gp\/tools\/markdown-converter\/\" class=\"linkbox\">\r\n            <h4 class=\"linkbox-title fz-md\">Markdown \u2192 HTML \u5909\u63db\u30c4\u30fc\u30eb<\/h4>\r\n            <span class=\"linkbox-excerpt\">Markdown\u8a18\u6cd5\u3092HTML\u306b\u5909\u63db\u3002\u30c6\u30fc\u30d6\u30eb\u3001\u30ea\u30b9\u30c8\u8a18\u6cd5\u3092\u30b5\u30dd\u30fc\u30c8\u3002<\/span>\r\n          <\/a>\r\n        <\/li>\r\n        <li class=\"slide\">\r\n          <a href=\"https:\/\/code-plus.jp\/gp\/tools\/dirtree-generator\/\" class=\"linkbox\">\r\n            <h4 class=\"linkbox-title fz-md\">DirTree Generator\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30c4\u30ea\u30fc\u751f\u6210\u30c4\u30fc\u30eb\uff09<\/h4>\r\n            <span class=\"linkbox-excerpt\">\u30d5\u30a9\u30eb\u30c0\u69cb\u9020\u3092\u8996\u899a\u7684\u306a\u30c4\u30ea\u30fc\u5f62\u5f0f\u3067\u81ea\u52d5\u751f\u6210\u3059\u308b\u30aa\u30f3\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3002<\/span>\r\n          <\/a>\r\n        <\/li>\r\n      <\/ul><!-- \/\/\/.shelf -->\r\n    <\/div><!-- \/\/\/.interior -->\r\n  <\/section><!-- \/\/\/.section -->\r\n\r\n\r\n  <!-- \u0f3b.mediano\uff08\u4f59\u767d\u8abf\u6574\uff1apage\u4e0b\uff09\u0f3a -->\r\n  <hr class=\"spacer-mediano\" \/>\r\n\r\n<\/div><!-- \/\/\/\u25b2.page  -->\r\n\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  \/\/ ============================================================================\r\n  \/\/ CSS \u5dee\u5206\u62bd\u51fa\uff1a2\u3064\u306e CSS \u3092\u300c@media \u306a\u3069\u306e\u6761\u4ef6 \uff0b \u30bb\u30ec\u30af\u30bf \uff0b \u30d7\u30ed\u30d1\u30c6\u30a3 \uff0b \u5024\u300d\u3067\r\n  \/\/ \u7a81\u304d\u5408\u308f\u305b\u3001\u5171\u901a\u90e8\u5206\u30fbA \u306e\u5dee\u5206\u30fbB \u306e\u5dee\u5206\u306b\u5206\u3051\u308b\u3002\r\n  \/\/   \u30fb\u3053\u306e\u30b5\u30a4\u30c8\u7d4c\u7531\u3067\u914d\u4fe1\u3059\u308b\u3068\u3001\u30bd\u30fc\u30b9\u4e2d\u306e\u751f\u30d0\u30c3\u30af\u30b9\u30e9\u30c3\u30b7\u30e5\u6587\u5b57\u304c\u5931\u308f\u308c\u308b\u305f\u3081\u3001\r\n  \/\/     \u30d0\u30c3\u30af\u30b9\u30e9\u30c3\u30b7\u30e5\u304c\u5fc5\u8981\u306a\u7b87\u6240\u306f\u5b9a\u6570\uff08BS\uff09\u304b\u3089\u7d44\u307f\u7acb\u3066\u3001\u30bd\u30fc\u30b9\u306b\u306f\u4e00\u5207\u66f8\u304b\u306a\u3044\u3002\r\n  \/\/   \u30fb\u6539\u884c\u30fb\u30bf\u30d6\u30fb\u62ec\u5f27\u3082\u3001WordPress \u306e\u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9\u8aa4\u7206\u9632\u6b62\u306e\u305f\u3081\u5b9a\u6570\u306b\u3057\u3066\u3042\u308b\u3002\r\n  \/\/ ============================================================================\r\n  const NL = String.fromCharCode(10);\r\n  const CR = String.fromCharCode(13);\r\n  const TAB = String.fromCharCode(9);\r\n  const BS = String.fromCharCode(92);\r\n  const OB = String.fromCharCode(91);\r\n  const CB = String.fromCharCode(93);\r\n\r\n\r\n  \/\/ ----------------------------------------------------------------------------\r\n  \/\/  \u5b57\u53e5\u306e\u88dc\u52a9\u95a2\u6570\r\n  \/\/ ----------------------------------------------------------------------------\r\n  function isSpace(ch) {\r\n    return ch === ' ' || ch === NL || ch === TAB || ch === CR || ch === String.fromCharCode(12);\r\n  }\r\n\r\n  \/\/ \u7a7a\u767d\u30fb\u6539\u884c\u30fb\u30bf\u30d6\u306e\u9023\u306a\u308a\u3092\u3001\u534a\u89d2\u30b9\u30da\u30fc\u30b91\u500b\u306b\u3059\u308b\r\n  function collapse(s) {\r\n    return String(s).split(CR).join('').split(TAB).join(' ').split(NL).join(' ')\r\n      .replace(new RegExp(' {2,}', 'g'), ' ').trim();\r\n  }\r\n\r\n  \/\/ \u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u306e\u7d42\u308f\u308a\u306e\u6b21\u306e\u4f4d\u7f6e\u3092\u8fd4\u3059\r\n  function skipString(src, pos) {\r\n    const q = src.charAt(pos);\r\n    let i = pos + 1;\r\n    while (i < src.length) {\r\n      const ch = src.charAt(i);\r\n      if (ch === BS) { i += 2; continue; }\r\n      if (ch === q) return i + 1;\r\n      i++;\r\n    }\r\n    return src.length;\r\n  }\r\n\r\n  \/\/ \u6df1\u3055 0\uff08\u4e38\u62ec\u5f27\u306e\u5916\uff09\u3067\u3001stops \u306e\u3044\u305a\u308c\u304b\u306e\u6587\u5b57\u304c\u73fe\u308c\u308b\u4f4d\u7f6e\u3092\u8fd4\u3059\r\n  \/\/ \uff08\u6587\u5b57\u5217\u30fb\u30b3\u30e1\u30f3\u30c8\u306e\u4e2d\u306f\u98db\u3070\u3059\uff09\r\n  function scanTo(src, pos, stops) {\r\n    let depth = 0;\r\n    let i = pos;\r\n    const len = src.length;\r\n    while (i < len) {\r\n      const ch = src.charAt(i);\r\n      if (ch === '\/' && src.charAt(i + 1) === '*') {\r\n        const end = src.indexOf('*\/', i + 2);\r\n        i = (end === -1) ? len : end + 2;\r\n        continue;\r\n      }\r\n      if (ch === '\"' || ch === \"'\") { i = skipString(src, i); continue; }\r\n      if (ch === BS) { i += 2; continue; }\r\n      if (ch === '(') { depth++; i++; continue; }\r\n      if (ch === ')') { if (depth > 0) depth--; i++; continue; }\r\n      if (depth === 0 && stops.indexOf(ch) !== -1) return i;\r\n      i++;\r\n    }\r\n    return len;\r\n  }\r\n\r\n  \/\/ openPos \u306e { \u306b\u5bfe\u5fdc\u3059\u308b } \u306e\u4f4d\u7f6e\u3092\u8fd4\u3059\r\n  function findBlockEnd(src, openPos) {\r\n    let depth = 0;\r\n    let i = openPos;\r\n    const len = src.length;\r\n    while (i < len) {\r\n      const ch = src.charAt(i);\r\n      if (ch === '\/' && src.charAt(i + 1) === '*') {\r\n        const end = src.indexOf('*\/', i + 2);\r\n        i = (end === -1) ? len : end + 2;\r\n        continue;\r\n      }\r\n      if (ch === '\"' || ch === \"'\") { i = skipString(src, i); continue; }\r\n      if (ch === BS) { i += 2; continue; }\r\n      if (ch === '{') {\r\n        depth++;\r\n      } else if (ch === '}') {\r\n        depth--;\r\n        if (depth === 0) return i;\r\n      }\r\n      i++;\r\n    }\r\n    return len;\r\n  }\r\n\r\n  \/\/ \u30b3\u30e1\u30f3\u30c8\u3092\u53d6\u308a\u9664\u304f\uff08\u6587\u5b57\u5217\u306e\u4e2d\u306f\u89e6\u3089\u306a\u3044\uff09\r\n  function stripComments(text) {\r\n    let out = '';\r\n    let i = 0;\r\n    const len = text.length;\r\n    while (i < len) {\r\n      const ch = text.charAt(i);\r\n      if (ch === '\/' && text.charAt(i + 1) === '*') {\r\n        const end = text.indexOf('*\/', i + 2);\r\n        i = (end === -1) ? len : end + 2;\r\n        continue;\r\n      }\r\n      if (ch === '\"' || ch === \"'\") {\r\n        const e = skipString(text, i);\r\n        out += text.slice(i, e);\r\n        i = e;\r\n        continue;\r\n      }\r\n      out += ch;\r\n      i++;\r\n    }\r\n    return out;\r\n  }\r\n\r\n  \/\/ \u6df1\u3055 0\uff08\u4e38\u62ec\u5f27\u30fb\u89d2\u62ec\u5f27\u306e\u5916\uff09\u306e sep \u3067\u5206\u5272\u3059\u308b\r\n  function splitList(text, sep) {\r\n    const parts = [];\r\n    let depth = 0;\r\n    let start = 0;\r\n    let i = 0;\r\n    while (i < text.length) {\r\n      const ch = text.charAt(i);\r\n      if (ch === '\"' || ch === \"'\") { i = skipString(text, i); continue; }\r\n      if (ch === BS) { i += 2; continue; }\r\n      if (ch === '(' || ch === OB) {\r\n        depth++;\r\n      } else if (ch === ')' || ch === CB) {\r\n        if (depth > 0) depth--;\r\n      } else if (ch === sep && depth === 0) {\r\n        parts.push(text.slice(start, i));\r\n        start = i + 1;\r\n      }\r\n      i++;\r\n    }\r\n    parts.push(text.slice(start));\r\n    return parts;\r\n  }\r\n\r\n\r\n  \/\/ ----------------------------------------------------------------------------\r\n  \/\/  \u6b63\u898f\u5316\uff08\u6bd4\u8f03\u7528\u306e\u30ad\u30fc\u3092\u4f5c\u308b\uff09\r\n  \/\/ ----------------------------------------------------------------------------\r\n  \/\/ \u30bb\u30ec\u30af\u30bf1\u500b\uff1a> + ~ \u306e\u524d\u5f8c\u306e\u7a7a\u767d\u3092\u7121\u304f\u3059\uff08\u62ec\u5f27\u30fb\u89d2\u62ec\u5f27\u306e\u4e2d\u306f\u89e6\u3089\u306a\u3044\uff09\r\n  function normSel(s) {\r\n    const src = collapse(s);\r\n    let out = '';\r\n    let depth = 0;\r\n    let i = 0;\r\n    while (i < src.length) {\r\n      const ch = src.charAt(i);\r\n      if (ch === '\"' || ch === \"'\") {\r\n        const e = skipString(src, i);\r\n        out += src.slice(i, e);\r\n        i = e;\r\n        continue;\r\n      }\r\n      if (ch === '(' || ch === OB) {\r\n        depth++;\r\n      } else if (ch === ')' || ch === CB) {\r\n        if (depth > 0) depth--;\r\n      }\r\n      if (depth === 0 && (ch === '>' || ch === '+' || ch === '~')) {\r\n        out = out.replace(new RegExp(' +$'), '');\r\n        out += ch;\r\n        i++;\r\n        while (src.charAt(i) === ' ') i++;\r\n        continue;\r\n      }\r\n      out += ch;\r\n      i++;\r\n    }\r\n    return out;\r\n  }\r\n\r\n  \/\/ \u30bb\u30ec\u30af\u30bf\u30ea\u30b9\u30c8\uff1a\u91cd\u8907\u3092\u9664\u304d\u3001{ text\uff08\u8868\u793a\u7528\uff09, key\uff08\u6bd4\u8f03\u7528\uff09} \u306e\u914d\u5217\u306b\u3059\u308b\r\n  function parseSelectors(prelude) {\r\n    const seen = Object.create(null);\r\n    const list = [];\r\n    splitList(prelude, ',').forEach(function (s) {\r\n      const text = collapse(s);\r\n      if (!text) return;\r\n      const key = normSel(text);\r\n      if (seen[key]) return;\r\n      seen[key] = true;\r\n      list.push({ text: text, key: key });\r\n    });\r\n    return list;\r\n  }\r\n\r\n  \/\/ @media \u306a\u3069\u306e\u6761\u4ef6\r\n  function normPrelude(s) {\r\n    let t = collapse(s);\r\n    while (t.indexOf('( ') !== -1) t = t.split('( ').join('(');\r\n    while (t.indexOf(' )') !== -1) t = t.split(' )').join(')');\r\n    t = t.split(' :').join(':').split(': ').join(':');\r\n    return t.toLowerCase();\r\n  }\r\n\r\n  \/\/ \u5ba3\u8a00\u306e\u5024\r\n  \/\/   loose \u306e\u3068\u304d\uff1a.5 \u3068 0.5\u300116\u9032\u30ab\u30e9\u30fc\u306e\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3082\u540c\u3058\u3068\u307f\u306a\u3059\r\n  function normValue(v, loose) {\r\n    let s = collapse(v);\r\n    s = s.replace(new RegExp(' *, *', 'g'), ',');\r\n    while (s.indexOf('( ') !== -1) s = s.split('( ').join('(');\r\n    while (s.indexOf(' )') !== -1) s = s.split(' )').join(')');\r\n    s = s.split(' !').join('!').split('! ').join('!');\r\n    if (loose) {\r\n      s = s.replace(new RegExp('(^|[ (,\/+-])' + BS + '.([0-9])', 'g'), function (m, a, b) {\r\n        return a + '0.' + b;\r\n      });\r\n      s = s.replace(new RegExp('#[0-9a-fA-F]{3,8}(?![0-9a-zA-Z_-])', 'g'), function (m) {\r\n        return m.toLowerCase();\r\n      });\r\n    }\r\n    return s;\r\n  }\r\n\r\n  function declKey(d, loose) {\r\n    if (d.opaque) return 'O:' + collapse(d.text);\r\n    return d.prop + ':' + normValue(d.value, loose);\r\n  }\r\n\r\n\r\n  \/\/ ----------------------------------------------------------------------------\r\n  \/\/  \u69cb\u6587\u89e3\u6790\r\n  \/\/    \u5ba3\u8a00\u30d6\u30ed\u30c3\u30af\u3092 { prop, value, raw, i } \u306e\u914d\u5217\u306b\u3057\u3001\r\n  \/\/    @media \u306a\u3069\u306e\u5165\u308c\u5b50\u306f\u3001\u6761\u4ef6\uff08ctx\uff09\u306e\u4ed8\u3044\u305f\u5e73\u3089\u306a\u30ea\u30b9\u30c8\u306b\u3059\u308b\r\n  \/\/ ----------------------------------------------------------------------------\r\n  function parseDecls(body) {\r\n    const out = [];\r\n    let i = 0;\r\n    const len = body.length;\r\n    while (i < len) {\r\n      const ch = body.charAt(i);\r\n      if (isSpace(ch) || ch === ';') { i++; continue; }\r\n      if (ch === '\/' && body.charAt(i + 1) === '*') {\r\n        const c = body.indexOf('*\/', i + 2);\r\n        i = (c === -1) ? len : c + 2;\r\n        continue;\r\n      }\r\n      const stop = scanTo(body, i, [';', '{']);\r\n      let chunkEnd = stop;\r\n      if (body.charAt(stop) === '{') {\r\n        chunkEnd = findBlockEnd(body, stop) + 1;\r\n      }\r\n      const raw = stripComments(body.slice(i, chunkEnd)).trim();\r\n      i = chunkEnd;\r\n      if (!raw) continue;\r\n\r\n      const colon = raw.indexOf(':');\r\n      if (raw.indexOf('{') !== -1 || colon === -1) {\r\n        out.push({ opaque: true, text: collapse(raw) });\r\n        continue;\r\n      }\r\n      let prop = raw.slice(0, colon).trim();\r\n      if (prop.indexOf('--') !== 0) prop = prop.toLowerCase();\r\n      const rawValue = raw.slice(colon + 1).trim();\r\n      out.push({ opaque: false, prop: prop, value: collapse(rawValue), raw: rawValue });\r\n    }\r\n    out.forEach(function (d, idx) { d.i = idx; });\r\n    return out;\r\n  }\r\n\r\n  const GROUP_AT_RULES = ['media', 'supports', 'layer', 'container', 'scope', 'document', '-moz-document'];\r\n\r\n  function parseNodes(text) {\r\n    const nodes = [];\r\n    let pending = [];\r\n    let i = 0;\r\n    const len = text.length;\r\n    while (i < len) {\r\n      const ch = text.charAt(i);\r\n      if (isSpace(ch) || ch === '}' || ch === ';') { i++; continue; }\r\n      if (ch === '\/' && text.charAt(i + 1) === '*') {\r\n        const close = text.indexOf('*\/', i + 2);\r\n        const stop = (close === -1) ? len : close + 2;\r\n        pending.push(text.slice(i, stop));\r\n        i = stop;\r\n        continue;\r\n      }\r\n\r\n      const stop = scanTo(text, i, ['{', ';', '}']);\r\n      const prelude = stripComments(text.slice(i, stop)).trim();\r\n      const term = text.charAt(stop);\r\n\r\n      \/\/ \u30d6\u30ed\u30c3\u30af\u3092\u6301\u305f\u306a\u3044\u6587\uff08@import \u306a\u3069\uff09\r\n      if (stop >= len || term !== '{') {\r\n        if (prelude) nodes.push({ kind: 'stmt', text: collapse(prelude) + ';', comments: pending });\r\n        pending = [];\r\n        i = stop + 1;\r\n        continue;\r\n      }\r\n\r\n      const close = findBlockEnd(text, stop);\r\n      const body = text.slice(stop + 1, close);\r\n      i = close + 1;\r\n      if (!prelude) { pending = []; continue; }\r\n\r\n      if (prelude.charAt(0) === '@') {\r\n        const nameMatch = prelude.match(new RegExp('^@([-A-Za-z0-9_]+)'));\r\n        const name = nameMatch ? nameMatch[1].toLowerCase() : '';\r\n        if (GROUP_AT_RULES.indexOf(name) !== -1) {\r\n          nodes.push({ kind: 'group', prelude: collapse(prelude), children: parseNodes(body), comments: pending });\r\n          pending = [];\r\n          continue;\r\n        }\r\n        if (name.indexOf('keyframes') !== -1) {\r\n          nodes.push({\r\n            kind: 'atomic', head: collapse(prelude), body: body,\r\n            key: collapse(prelude) + '{' + collapse(stripComments(body)) + '}',\r\n            comments: pending\r\n          });\r\n          pending = [];\r\n          continue;\r\n        }\r\n      }\r\n\r\n      const sels = parseSelectors(prelude);\r\n      nodes.push({\r\n        kind: 'rule',\r\n        sels: sels,\r\n        selKey: sels.map(function (s) { return s.key; }).sort().join(','),\r\n        decls: parseDecls(body),\r\n        comments: pending\r\n      });\r\n      pending = [];\r\n    }\r\n    return nodes;\r\n  }\r\n\r\n  \/\/ \u5165\u308c\u5b50\u306e @media \u306a\u3069\u3092\u3001\u6761\u4ef6\uff08ctx\uff09\u4ed8\u304d\u306e\u5e73\u3089\u306a\u30ea\u30b9\u30c8\u306b\u3059\u308b\r\n  function flatten(nodes, ctx, out) {\r\n    nodes.forEach(function (n) {\r\n      if (n.kind === 'group') {\r\n        const before = out.length;\r\n        flatten(n.children, ctx.concat([n.prelude]), out);\r\n        if (n.comments.length > 0 && out.length > before) {\r\n          out[before].comments = n.comments.concat(out[before].comments);\r\n        }\r\n        return;\r\n      }\r\n      n.ctx = ctx;\r\n      out.push(n);\r\n    });\r\n  }\r\n\r\n  function parseCss(text) {\r\n    let src = String(text);\r\n    if (src.charCodeAt(0) === 0xFEFF) src = src.slice(1);\r\n    const items = [];\r\n    flatten(parseNodes(src), [], items);\r\n    return items;\r\n  }\r\n\r\n\r\n  \/\/ ----------------------------------------------------------------------------\r\n  \/\/  \u6bd4\u8f03\r\n  \/\/ ----------------------------------------------------------------------------\r\n  \/\/ \u5404\u9805\u76ee\u306b\u3001\u5bfe\u5fdc\u3065\u3051\u7528\u306e id\uff08\u6761\u4ef6 \uff0b \u30bb\u30ec\u30af\u30bf \uff0b \u4f55\u56de\u76ee\u304b\uff09\u3092\u4ed8\u3051\u308b\r\n  function indexItems(items) {\r\n    const counter = Object.create(null);\r\n    items.forEach(function (it) {\r\n      const ctxKey = it.ctx.map(normPrelude).join(' > ');\r\n      let base;\r\n      if (it.kind === 'rule') base = 'R|' + ctxKey + '|' + it.selKey;\r\n      else if (it.kind === 'stmt') base = 'S|' + ctxKey + '|' + it.text;\r\n      else base = 'K|' + ctxKey + '|' + it.key;\r\n      counter[base] = (counter[base] || 0) + 1;\r\n      it.id = base + '#' + counter[base];\r\n    });\r\n  }\r\n\r\n  function copyRule(it, decls, comments) {\r\n    return { kind: 'rule', ctx: it.ctx, sels: it.sels, selKey: it.selKey, decls: decls, comments: comments };\r\n  }\r\n\r\n  function ruleLabel(it) {\r\n    const sel = it.sels.map(function (s) { return s.text; }).join(', ');\r\n    return (it.ctx.length > 0 ? it.ctx.join(' ') + ' ' : '') + sel;\r\n  }\r\n\r\n  \/\/ \u540c\u3058\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u300c\u5171\u901a\u300d\u3068\u300c\u5dee\u5206\u300d\u306e\u4e21\u65b9\u306b\u5206\u304b\u308c\u3001\r\n  \/\/ \u3057\u304b\u3082\u5171\u901a\u306e\u307b\u3046\u304c\u5143\u306e\u4f4d\u7f6e\u3067\u5f8c\u308d\u306b\u3042\u308b\u5834\u5408\u306f\u3001\u30ab\u30b9\u30b1\u30fc\u30c9\u9806\u304c\u5909\u308f\u308b\u306e\u3067\u8b66\u544a\u3059\u308b\r\n  function checkSplit(it, commonDecls, restDecls, warnings) {\r\n    restDecls.forEach(function (r) {\r\n      if (r.opaque) return;\r\n      const clash = commonDecls.some(function (c) {\r\n        return !c.opaque && c.prop === r.prop && c.i > r.i;\r\n      });\r\n      if (!clash) return;\r\n      const msg = ruleLabel(it) + '\uff08' + r.prop + '\uff09';\r\n      if (warnings.indexOf(msg) === -1) warnings.push(msg);\r\n    });\r\n  }\r\n\r\n  function compareCss(itemsA, itemsB, opts) {\r\n    const loose = !!(opts && opts.loose);\r\n    indexItems(itemsA);\r\n    indexItems(itemsB);\r\n\r\n    const mapB = Object.create(null);\r\n    itemsB.forEach(function (b) { mapB[b.id] = b; });\r\n\r\n    const common = [];\r\n    const diffA = [];\r\n    const matched = Object.create(null);\r\n    const restForB = Object.create(null);\r\n    const warnings = [];\r\n\r\n    itemsA.forEach(function (a) {\r\n      const b = mapB[a.id];\r\n      if (!b) { diffA.push(a); return; }\r\n      matched[a.id] = true;\r\n\r\n      \/\/ \u30eb\u30fc\u30eb\u4ee5\u5916\uff08@import\u30fb@keyframes \u306a\u3069\uff09\u306f\u3001\u30ad\u30fc\u304c\u540c\u3058\u306a\u3089\u5168\u4f53\u304c\u5171\u901a\r\n      if (a.kind !== 'rule') { common.push(a); return; }\r\n\r\n      \/\/ \u5ba3\u8a00\u3092\u3001\u540c\u3058\u5ba3\u8a00\u306e\u500b\u6570\u3076\u3093\u3060\u3051\u7a81\u304d\u5408\u308f\u305b\u308b\r\n      const countA = Object.create(null);\r\n      const countB = Object.create(null);\r\n      a.decls.forEach(function (d) { const k = declKey(d, loose); countA[k] = (countA[k] || 0) + 1; });\r\n      b.decls.forEach(function (d) { const k = declKey(d, loose); countB[k] = (countB[k] || 0) + 1; });\r\n\r\n      const commonA = [];\r\n      const restA = [];\r\n      a.decls.forEach(function (d) {\r\n        const k = declKey(d, loose);\r\n        if (countB[k] > 0) { countB[k]--; commonA.push(d); } else { restA.push(d); }\r\n      });\r\n      const commonB = [];\r\n      const restB = [];\r\n      b.decls.forEach(function (d) {\r\n        const k = declKey(d, loose);\r\n        if (countA[k] > 0) { countA[k]--; commonB.push(d); } else { restB.push(d); }\r\n      });\r\n\r\n      checkSplit(a, commonA, restA, warnings);\r\n      checkSplit(b, commonB, restB, warnings);\r\n\r\n      \/\/ \u4e2d\u8eab\u304c\u7a7a\u306e\u30eb\u30fc\u30eb\u3069\u3046\u3057\u3082\u3001\u540c\u3058\u3082\u306e\u3068\u3057\u3066\u5171\u901a\u306b\u3059\u308b\r\n      if (commonA.length > 0 || (a.decls.length === 0 && b.decls.length === 0)) {\r\n        common.push(copyRule(a, commonA, a.comments.length > 0 ? a.comments : b.comments));\r\n      }\r\n      if (restA.length > 0) diffA.push(copyRule(a, restA, a.comments));\r\n      restForB[a.id] = restB;\r\n    });\r\n\r\n    const diffB = [];\r\n    itemsB.forEach(function (b) {\r\n      if (!matched[b.id]) { diffB.push(b); return; }\r\n      const rest = restForB[b.id];\r\n      if (rest && rest.length > 0) diffB.push(copyRule(b, rest, b.comments));\r\n    });\r\n\r\n    return { common: common, diffA: diffA, diffB: diffB, warnings: warnings };\r\n  }\r\n\r\n\r\n  \/\/ ----------------------------------------------------------------------------\r\n  \/\/  \u51fa\u529b\r\n  \/\/ ----------------------------------------------------------------------------\r\n  function indent(n) {\r\n    let s = '';\r\n    for (let k = 0; k < n; k++) s += TAB;\r\n    return s;\r\n  }\r\n\r\n  function trimLeft(s) {\r\n    return s.replace(new RegExp('^[ ' + TAB + ']+'), '');\r\n  }\r\n\r\n  function printDecl(d, depth, lines) {\r\n    if (d.opaque) {\r\n      const t = d.text;\r\n      lines.push(indent(depth) + (t.charAt(t.length - 1) === '}' ? t : t + ';'));\r\n      return;\r\n    }\r\n    \/\/ \u5024\u304c\u8907\u6570\u884c\u306e\u3068\u304d\uff08text-shadow \u306e\u9577\u3044\u4e26\u3073\u306a\u3069\uff09\u306f\u3001\u884c\u3092\u4fdd\u3063\u305f\u307e\u307e\u5b57\u4e0b\u3052\u3059\u308b\r\n    const valueLines = d.raw.split(NL).map(function (l) { return l.trim(); }).filter(Boolean);\r\n    if (valueLines.length > 1) {\r\n      lines.push(indent(depth) + d.prop + ':');\r\n      valueLines.forEach(function (l, idx) {\r\n        lines.push(indent(depth + 1) + l + (idx === valueLines.length - 1 ? ';' : ''));\r\n      });\r\n      return;\r\n    }\r\n    lines.push(indent(depth) + d.prop + ': ' + d.value + ';');\r\n  }\r\n\r\n  function printItems(items, opts) {\r\n    const withComments = !opts || opts.comments !== false;\r\n    const lines = [];\r\n    const open = [];\r\n\r\n    function closeTo(level) {\r\n      while (open.length > level) {\r\n        open.pop();\r\n        lines.push(indent(open.length) + '}');\r\n      }\r\n    }\r\n\r\n    items.forEach(function (it) {\r\n      let k = 0;\r\n      while (k < open.length && k < it.ctx.length && open[k] === it.ctx[k]) k++;\r\n      closeTo(k);\r\n      if (lines.length > 0 && lines[lines.length - 1] !== '') lines.push('');\r\n      for (let d = k; d < it.ctx.length; d++) {\r\n        lines.push(indent(d) + it.ctx[d] + ' {');\r\n        open.push(it.ctx[d]);\r\n      }\r\n      const depth = it.ctx.length;\r\n\r\n      if (withComments) {\r\n        it.comments.forEach(function (c) {\r\n          c.split(NL).forEach(function (ln, idx) {\r\n            const t = ln.split(CR).join('');\r\n            lines.push(indent(depth) + (idx === 0 ? t.trim() : trimLeft(t).replace(new RegExp(' +$'), '')));\r\n          });\r\n        });\r\n      }\r\n\r\n      if (it.kind === 'stmt') {\r\n        lines.push(indent(depth) + it.text);\r\n        return;\r\n      }\r\n      if (it.kind === 'atomic') {\r\n        lines.push(indent(depth) + it.head + ' {');\r\n        const bodyLines = it.body.split(CR).join('').split(NL);\r\n        while (bodyLines.length > 0 && bodyLines[0].trim() === '') bodyLines.shift();\r\n        while (bodyLines.length > 0 && bodyLines[bodyLines.length - 1].trim() === '') bodyLines.pop();\r\n        let minIndent = -1;\r\n        bodyLines.forEach(function (l) {\r\n          if (l.trim() === '') return;\r\n          const w = l.length - trimLeft(l).length;\r\n          if (minIndent === -1 || w < minIndent) minIndent = w;\r\n        });\r\n        bodyLines.forEach(function (l) {\r\n          lines.push(l.trim() === '' ? '' : indent(depth + 1) + l.slice(Math.max(0, minIndent)).replace(new RegExp('[ ' + TAB + ']+$'), ''));\r\n        });\r\n        lines.push(indent(depth) + '}');\r\n        return;\r\n      }\r\n\r\n      const selText = it.sels.map(function (s) { return s.text; }).join(',' + NL + indent(depth));\r\n      lines.push(indent(depth) + selText + ' {');\r\n      it.decls.forEach(function (d) { printDecl(d, depth + 1, lines); });\r\n      lines.push(indent(depth) + '}');\r\n    });\r\n\r\n    closeTo(0);\r\n    return lines.join(NL) + (lines.length > 0 ? NL : '');\r\n  }\r\n\r\n  function countDecls(items) {\r\n    let n = 0;\r\n    items.forEach(function (it) { n += (it.kind === 'rule') ? it.decls.length : 1; });\r\n    return n;\r\n  }\r\n\r\n  const core = {\r\n    parseCss: parseCss,\r\n    compareCss: compareCss,\r\n    printItems: printItems,\r\n    countDecls: countDecls\r\n  };\r\n  if (typeof module !== 'undefined' && module.exports) { module.exports = core; }\r\n  if (typeof document === 'undefined') return;\r\n\r\n\r\n  \/\/ ============================================================================\r\n  \/\/  \u753b\u9762\u307e\u308f\u308a\r\n  \/\/ ============================================================================\r\n  const $ = function (id) { return document.getElementById(id); };\r\n  const inputA = $('cssInputA');\r\n  const inputB = $('cssInputB');\r\n  const nameA = $('fileNameA');\r\n  const nameB = $('fileNameB');\r\n  const compareBtn = $('compareBtn');\r\n  if (!inputA || !inputB || !nameA || !nameB || !compareBtn) return;\r\n\r\n  const LS_KEY = 'cnvtVkaA_cssDiff';\r\n  const SAVE_IDS = ['cssInputA', 'cssInputB', 'fileNameA', 'fileNameB', 'optLooseValues', 'optKeepComments'];\r\n\r\n  function escapeHtml(s) {\r\n    return String(s).split('&').join('&amp;').split('<').join('&lt;').split('>').join('&gt;').split('\"').join('&quot;');\r\n  }\r\n\r\n  function showMessage(msg, isSuccess, areaId) {\r\n    const area = $(areaId);\r\n    if (!area) return;\r\n    const cls = isSuccess ? 'is-primary' : 'is-caution';\r\n    const icon = isSuccess ? 'ma-check_circle' : 'ma-error';\r\n    const color = isSuccess ? 'primary' : 'error';\r\n    area.innerHTML =\r\n      '<p class=\"alert is-ghosted ' + cls + ' mt-0.5r\">' +\r\n      '<i class=\"icon mas ' + icon + ' c-' + color + ' mr-0.5r\"><\/i>' +\r\n      '<span>' + escapeHtml(msg) + '<\/span><\/p>';\r\n    setTimeout(function () { area.innerHTML = ''; }, 3000);\r\n  }\r\n\r\n  \/\/ \u51fa\u529b\u30d5\u30a1\u30a4\u30eb\u540d\uff1axxx.css \u2192 xxx.diff.css\r\n  function diffName(name, fallback) {\r\n    const base = collapse(name).replace(new RegExp(BS + '.css$', 'i'), '') || fallback;\r\n    return base + '.diff.css';\r\n  }\r\n\r\n  \/\/ ---- \u4fdd\u5b58\u30fb\u5fa9\u5143 ----\r\n  function saveState() {\r\n    try {\r\n      const state = {};\r\n      SAVE_IDS.forEach(function (id) {\r\n        const el = $(id);\r\n        if (!el) return;\r\n        state[id] = (el.type === 'checkbox') ? el.checked : el.value;\r\n      });\r\n      localStorage.setItem(LS_KEY, JSON.stringify(state));\r\n    } catch (e) { \/* \u4fdd\u5b58\u3067\u304d\u306a\u304f\u3066\u3082\u52d5\u4f5c\u306b\u306f\u5f71\u97ff\u3057\u306a\u3044 *\/ }\r\n  }\r\n\r\n  function loadState() {\r\n    try {\r\n      const saved = localStorage.getItem(LS_KEY);\r\n      if (!saved) return;\r\n      const state = JSON.parse(saved);\r\n      SAVE_IDS.forEach(function (id) {\r\n        const el = $(id);\r\n        if (!el || state[id] === undefined) return;\r\n        if (el.type === 'checkbox') el.checked = !!state[id];\r\n        else el.value = state[id];\r\n      });\r\n    } catch (e) { \/* \u5fa9\u5143\u3067\u304d\u306a\u304f\u3066\u3082\u52d5\u4f5c\u306b\u306f\u5f71\u97ff\u3057\u306a\u3044 *\/ }\r\n  }\r\n\r\n  \/\/ ---- \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f ----\r\n  function loadFileInto(file, textarea, nameInput) {\r\n    const reader = new FileReader();\r\n    reader.onload = function (e) {\r\n      textarea.value = String(e.target.result);\r\n      nameInput.value = file.name;\r\n      saveState();\r\n    };\r\n    reader.readAsText(file, 'UTF-8');\r\n  }\r\n\r\n  function setupInput(textarea, nameInput, fileInput, pickBtn) {\r\n    pickBtn.addEventListener('click', function () { fileInput.click(); });\r\n    fileInput.addEventListener('change', function (e) {\r\n      if (e.target.files.length > 0) loadFileInto(e.target.files[0], textarea, nameInput);\r\n      fileInput.value = '';\r\n    });\r\n    textarea.addEventListener('dragover', function (e) {\r\n      e.preventDefault();\r\n      this.style.backgroundColor = '#f0f0f0';\r\n    });\r\n    textarea.addEventListener('dragleave', function (e) {\r\n      e.preventDefault();\r\n      this.style.backgroundColor = '';\r\n    });\r\n    textarea.addEventListener('drop', function (e) {\r\n      e.preventDefault();\r\n      this.style.backgroundColor = '';\r\n      if (e.dataTransfer.files.length > 0) loadFileInto(e.dataTransfer.files[0], textarea, nameInput);\r\n    });\r\n  }\r\n\r\n  \/\/ ---- \u6bd4\u8f03\u306e\u5b9f\u884c ----\r\n  function run() {\r\n    const errorArea = $('errorMessage');\r\n    if (errorArea) errorArea.innerHTML = '';\r\n    if (!inputA.value.trim() || !inputB.value.trim()) {\r\n      showMessage('A \u3068 B \u306e\u4e21\u65b9\u306b CSS \u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044', false, 'errorMessage');\r\n      return;\r\n    }\r\n\r\n    let result;\r\n    try {\r\n      const itemsA = core.parseCss(inputA.value);\r\n      const itemsB = core.parseCss(inputB.value);\r\n      result = core.compareCss(itemsA, itemsB, { loose: $('optLooseValues').checked });\r\n    } catch (err) {\r\n      console.error(err);\r\n      showMessage('\u6bd4\u8f03\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a' + (err && err.message ? err.message : err), false, 'errorMessage');\r\n      return;\r\n    }\r\n\r\n    const printOpts = { comments: $('optKeepComments').checked };\r\n    $('outCommon').value = core.printItems(result.common, printOpts);\r\n    $('outDiffA').value = core.printItems(result.diffA, printOpts);\r\n    $('outDiffB').value = core.printItems(result.diffB, printOpts);\r\n\r\n    let fileA = collapse(nameA.value) || 'a.css';\r\n    let fileB = collapse(nameB.value) || 'b.css';\r\n    $('nameCommon').textContent = 'intersection.css';\r\n    $('nameDiffA').textContent = diffName(fileA, 'a');\r\n    let diffNameB = diffName(fileB, 'b');\r\n    if (diffNameB === $('nameDiffA').textContent) diffNameB = diffName(fileB, 'b').replace('.diff.css', '-b.diff.css');\r\n    $('nameDiffB').textContent = diffNameB;\r\n\r\n    const nCommon = core.countDecls(result.common);\r\n    const nA = core.countDecls(result.diffA);\r\n    const nB = core.countDecls(result.diffB);\r\n    let html =\r\n      '<div class=\"box is-outlined c-gray mt-0.5r\"><p class=\"fz-xs c-gray\">' +\r\n      '\u5171\u901a\uff1a' + nCommon + ' \u4ef6\uff08' + result.common.length + ' \u30eb\u30fc\u30eb\uff09\uff0f ' +\r\n      'A \u306e\u5dee\u5206\uff1a' + nA + ' \u4ef6\uff08' + result.diffA.length + ' \u30eb\u30fc\u30eb\uff09\uff0f ' +\r\n      'B \u306e\u5dee\u5206\uff1a' + nB + ' \u4ef6\uff08' + result.diffB.length + ' \u30eb\u30fc\u30eb\uff09<\/p>';\r\n    if (result.warnings.length > 0) {\r\n      html += '<p class=\"fz-xs mt-0.5r\"><b class=\"fw-600\">\u26a0\ufe0f \u540c\u3058\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u5171\u901a\u3068\u5dee\u5206\u306b\u5206\u304b\u308c\u3066\u3044\u307e\u3059\uff08\u5143\u306e\u9806\u5e8f\u304c\u5909\u308f\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff09\uff1a<\/b><\/p><ul class=\"fz-xs\">';\r\n      result.warnings.forEach(function (w) { html += '<li>' + escapeHtml(w) + '<\/li>'; });\r\n      html += '<\/ul>';\r\n    }\r\n    html += '<\/div>';\r\n    $('summaryArea').innerHTML = html;\r\n    saveState();\r\n  }\r\n\r\n  \/\/ ---- \u30b3\u30d4\u30fc\u30fb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 ----\r\n  function copyText(text) {\r\n    if (!text) return;\r\n    navigator.clipboard.writeText(text).then(function () {\r\n      showMessage('\u30c6\u30ad\u30b9\u30c8\u304c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3057\u305f\uff01', true, 'successMessage');\r\n    }, function (err) {\r\n      showMessage('\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3078\u306e\u30b3\u30d4\u30fc\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a' + err, false, 'successMessage');\r\n    });\r\n  }\r\n\r\n  function downloadText(text, filename) {\r\n    if (!text) return;\r\n    const blob = new Blob([text], { type: 'text\/css;charset=utf-8' });\r\n    const url = URL.createObjectURL(blob);\r\n    const a = document.createElement('a');\r\n    a.href = url;\r\n    a.download = filename;\r\n    document.body.appendChild(a);\r\n    a.click();\r\n    document.body.removeChild(a);\r\n    URL.revokeObjectURL(url);\r\n  }\r\n\r\n  document.querySelectorAll('[data-copy]').forEach(function (el) {\r\n    el.addEventListener('click', function () { copyText($(el.getAttribute('data-copy')).value); });\r\n  });\r\n  document.querySelectorAll('[data-download]').forEach(function (el) {\r\n    el.addEventListener('click', function () {\r\n      const text = $(el.getAttribute('data-download')).value;\r\n      const nameEl = $(el.getAttribute('data-name'));\r\n      downloadText(text, nameEl ? nameEl.textContent : 'result.css');\r\n    });\r\n  });\r\n\r\n  \/\/ ---- \u521d\u671f\u5316 ----\r\n  loadState();\r\n  setupInput(inputA, nameA, $('fileInputA'), $('pickA'));\r\n  setupInput(inputB, nameB, $('fileInputB'), $('pickB'));\r\n  compareBtn.addEventListener('click', run);\r\n  SAVE_IDS.forEach(function (id) {\r\n    const el = $(id);\r\n    if (!el) return;\r\n    el.addEventListener((el.type === 'checkbox') ? 'change' : 'input', saveState);\r\n  });\r\n})();\r\n<\/script>\r\n","protected":false},"excerpt":{"rendered":"2\u3064\u306eCSS\u3092\u6bd4\u8f03\u3057\u3066\u3001\u5171\u901a\u90e8\u5206\u3068A\u30fbB\u305d\u308c\u305e\u308c\u306e\u5dee\u5206\u3092\u5225\u3005\u306eCSS\u306b\u51fa\u529b\u3059\u308b\u30c4\u30fc\u30eb\u3002\u540c\u3058@media\u306e\u540c\u3058\u30bb\u30ec\u30af\u30bf\u540c\u58eb\u3092\u7a81\u304d\u5408\u308f\u305b\u3001\u30d6\u30e9\u30a6\u30b6\u5185\u3067\u51e6\u7406\u3002","protected":false},"author":1,"featured_media":0,"parent":173,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"templates\/page-converter.php","meta":{"_acf_changed":false,"_exclude_from_list_pages":"","footnotes":"","vk-ltc-link":"","vk-ltc-target":"0"},"categories":[],"tags":[],"group":[],"pg":[],"class_list":["post-15338","page","type-page","status-publish"],"acf":[],"_links":{"self":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/15338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/comments?post=15338"}],"version-history":[{"count":3,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/15338\/revisions"}],"predecessor-version":[{"id":15398,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/15338\/revisions\/15398"}],"up":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/173"}],"wp:attachment":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/media?parent=15338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/categories?post=15338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/tags?post=15338"},{"taxonomy":"group","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/group?post=15338"},{"taxonomy":"pg","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pg?post=15338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}