While an HTML style element for inline CSS needs nothing but simple start and end tags (as of HTML5 and later)
<style>
p { color: red }
</style>
a more robust style element requires a precise series of overlapping code comments.
Here is the answer if you want a code snippet to copy & paste
<style><!--/*--><![CDATA[*/
p { color: red } /* you may delete this sample style rule */
/*]]><!--*/--></style>
Here is why:
1. Not all HTML processors are CSS processors. While all modern browsers know how to parse CSS in style elements inside HTML, it is still quite reasonable for people to build HTML processors that do not, and many exist. There are plenty of ways to errantly or deliberately misplace markup inside a style element, like in a CSS comment, that such processors will not see, that can break them and cause unexpected and different results in different processors. Strictly speaking any use of > child combinator selector syntax should also be HTML escaped (as >) inside a style elment.
Thus it makes your HTML more parseable, by more processors, if you can hide the entirety of the style sheet inside the style element from such processing, including any child combinators. A CDATA section does exactly that:
<style><![CDATA[
p { color: orange } /* CDATA allows a </style> here to not close the element */
body > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */
]]></style>
2. However CSS syntax does not recognize a CDATA directive (even as of the latest published CSS Syntax Module Level 3¹ or editor's draft² as of this writing). CSS parsers may very well treat a CDATA directive as a syntax error that invalidates the subsequent style rule.
Thus we must hide the CDATA directive, its opening and closing markup, from CSS parsers. CSS code comments /* ... */ can do exactly that:
<style>/*<![CDATA[*/
p { color: orange } /* CDATA allows a </style> here to not close the element */
body > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */
/*]]>*/</style>
3. This is close but still exposes HTML processors that do not process CSS to a minimal bit of content, the CSS comment opener and closer that are outside the CDATA section:
/* */
This recently showed up in a draft of the This Week in The #IndieWeb newsletter³, because portions of it are automatically constructed by parsing the HTML of MediaWiki pages for content, and one of those used a MediaWiki template that included a minimal style element to style the marked up content inserted by the template. A draft of the newsletter was showing raw CSS, extracted as text from the style element by the CSS-unaware parser extracting content. I was able to hide nearly all of it using CSS comments around the CDATA section opener and closer. Except for that little bit of CSS comment noise outside the CDATA section: /* */
Fortunately there is one more tool in our toolbox that we can use. Simple HTML/SGML comments <!-- --> are ignored at the start and end of style sheets⁴ (noted there as CDO-token⁵ and CDC-token⁶), and thus we can use those to hide the last two remaining CSS comment pieces that were leaking out, like this: <!-- /* --> and <!-- */ -->. Note that the portion of the HTML comment directives that are inside CSS comments are ignored by CSS processors, which is why this works for both processors that parse CSS and those that do not.
This last addition produces our answer, with no fewer than three different comment mechanisms (CDATA, CSS, HTML/SGML), overlapping to hide each other from different processors:
<style><!--/*--><![CDATA[*/
p { color: orange } /* CDATA allows a </style> here to not close the element */
body > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */
/*]]><!--*/--></style>
By replacing those informative style rules with a style rule to be deleted, we have recreated the code snippet to copy & paste from the top of the post:
<style><!--/*--><![CDATA[*/
p { color: red } /* you may delete this sample style rule */
/*]]><!--*/--></style>
Q.E.D.
Afterword:
If you View Source on this original permalink or my home page you can see the more robust style element in a real world example, following the IndieWeb Use What You Make⁷ principle.
#CSS #style #styleElement #styleSheet #HTML #HTML5 #CSSsyntax #codeComments #CDATA #SGML #CSScomment #HTMLcomment #SGMLcomment
Glossary:
CDATA
https://en.wikipedia.org/wiki/CDATA
CSS — Cascading Style Sheets
https://en.wikipedia.org/wiki/CSS
HTML — HyperText Markup Language
https://en.wikipedia.org/wiki/HTML
HTML5
https://en.wikipedia.org/wiki/HTML5
IndieWeb Principles
https://indieweb.org/principles
MediaWiki
https://en.wikipedia.org/wiki/MediaWiki
original permalink
https://indieweb.org/original_permalink
Q.E.D.
https://en.wikipedia.org/wiki/Q.E.D.
References:
¹ https://www.w3.org/TR/css-syntax-3/
² https://drafts.csswg.org/css-syntax/
³ https://indieweb.org/this-week-in-the-indieweb
⁴ https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram
⁵ https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram
⁶ https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram
⁷ https://indieweb.org/use_what_you_make
{
"type": "entry",
"author": {
"name": "#indieweb",
"url": "https://mastodon.social/tags/indieweb",
"photo": null
},
"url": "https://fed.brid.gy/r/https://tantek.com/2024/075/t1/css-more-robust-style-element",
"content": {
"html": "While an HTML style element for inline CSS needs nothing but simple start and end tags (as of HTML5 and later)<br /><br /><style> <br />p { color: red }<br /></style><br /><br />a more robust style element requires a precise series of overlapping code comments.<br /><br />Here is the answer if you want a code snippet to copy & paste<br /><br /><style><!--/*--><![CDATA[*/ <br />p { color: red } /* you may delete this sample style rule */<br />/*]]><!--*/--></style><br /><br /><br />Here is why:<br /><br />1. Not all HTML processors are CSS processors. While all modern browsers know how to parse CSS in style elements inside HTML, it is still quite reasonable for people to build HTML processors that do not, and many exist. There are plenty of ways to errantly or deliberately misplace markup inside a style element, like in a CSS comment, that such processors will not see, that can break them and cause unexpected and different results in different processors. Strictly speaking any use of > child combinator selector syntax should also be HTML escaped (as &gt;) inside a style elment.<br /><br />Thus it makes your HTML more parseable, by more processors, if you can hide the entirety of the style sheet inside the style element from such processing, including any child combinators. A CDATA section does exactly that:<br /><br /><style><![CDATA[ <br />p { color: orange } /* CDATA allows a </style> here to not close the element */<br />body > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */<br />]]></style><br /><br /><br />2. However CSS syntax does not recognize a CDATA directive (even as of the latest published CSS Syntax Module Level 3<a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_note-1\">\u00b9</a> or editor's draft<a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_note-2\">\u00b2</a> as of this writing). CSS parsers may very well treat a CDATA directive as a syntax error that invalidates the subsequent style rule.<br /><br />Thus we must hide the CDATA directive, its opening and closing markup, from CSS parsers. \u00a0CSS code comments /* ... */ can do exactly that:<br /><br /><style>/*<![CDATA[*/ <br />p { color: orange } /* CDATA allows a </style> here to not close the element */<br />body > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */<br />/*]]>*/</style><br /><br /><br />3. This is close but still exposes HTML processors that do not process CSS to a minimal bit of content, the CSS comment opener and closer that are outside the CDATA section:<br /><br />/* */<br /><br />This recently showed up in a draft of the This Week in The <a href=\"https://indieweb.social/tags/IndieWeb\">#<span class=\"p-category\">IndieWeb</span></a> newsletter<a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_note-3\">\u00b3</a>, because portions of it are automatically constructed by parsing the HTML of MediaWiki pages for content, and one of those used a MediaWiki template that included a minimal style element to style the marked up content inserted by the template. A draft of the newsletter was showing raw CSS, extracted as text from the style element by the CSS-unaware parser extracting content. I was able to hide nearly all of it using CSS comments around the CDATA section opener and closer. Except for that little bit of CSS comment noise outside the CDATA section: /* */<br /><br />Fortunately there is one more tool in our toolbox that we can use. Simple HTML/SGML comments <!-- --> are ignored at the start and end of style sheets<a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_note-4\">\u2074</a> (noted there as CDO-token<a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_note-5\">\u2075</a> and CDC-token<a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_note-6\">\u2076</a>), and thus we can use those to hide the last two remaining CSS comment pieces that were leaking out, like this: <!-- /* --> and <!-- */ -->. Note that the portion of the HTML comment directives that are inside CSS comments are ignored by CSS processors, which is why this works for both processors that parse CSS and those that do not.<br /><br />This last addition produces our answer, with no fewer than three different comment mechanisms (CDATA, CSS, HTML/SGML), overlapping to hide each other from different processors:<br /><br /><style><!--/*--><![CDATA[*/ <br />p { color: orange } /* CDATA allows a </style> here to not close the element */<br />body > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */<br />/*]]><!--*/--></style><br /><br />By replacing those informative style rules with a style rule to be deleted, we have recreated the code snippet to copy & paste from the top of the post: <br /><br /><style><!--/*--><![CDATA[*/ <br />p { color: red } /* you may delete this sample style rule */<br />/*]]><!--*/--></style><br /><br />Q.E.D.<br /><br /><br />Afterword:<br /><br />If you View Source on this original permalink or my home page you can see the more robust style element in a real world example, following the IndieWeb Use What You Make<a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_note-7\">\u2077</a> principle.<br /><br /><a href=\"https://indieweb.social/tags/CSS\">#<span class=\"p-category\">CSS</span></a> <a href=\"https://indieweb.social/tags/style\">#<span class=\"p-category\">style</span></a> <a href=\"https://indieweb.social/tags/styleElement\">#<span class=\"p-category\">styleElement</span></a> <a href=\"https://indieweb.social/tags/styleSheet\">#<span class=\"p-category\">styleSheet</span></a> <a href=\"https://indieweb.social/tags/HTML\">#<span class=\"p-category\">HTML</span></a> <a href=\"https://indieweb.social/tags/HTML5\">#<span class=\"p-category\">HTML5</span></a> <a href=\"https://indieweb.social/tags/CSSsyntax\">#<span class=\"p-category\">CSSsyntax</span></a> <a href=\"https://indieweb.social/tags/codeComments\">#<span class=\"p-category\">codeComments</span></a> <a href=\"https://indieweb.social/tags/CDATA\">#<span class=\"p-category\">CDATA</span></a> <a href=\"https://indieweb.social/tags/SGML\">#<span class=\"p-category\">SGML</span></a> <a href=\"https://indieweb.social/tags/CSScomment\">#<span class=\"p-category\">CSScomment</span></a> <a href=\"https://indieweb.social/tags/HTMLcomment\">#<span class=\"p-category\">HTMLcomment</span></a> <a href=\"https://indieweb.social/tags/SGMLcomment\">#<span class=\"p-category\">SGMLcomment</span></a><br /><br /><br />Glossary:<br /><br />CDATA<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/CDATA\">https://en.wikipedia.org/wiki/CDATA</a><br />CSS \u2014 Cascading Style Sheets<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/CSS\">https://en.wikipedia.org/wiki/CSS</a><br />HTML \u2014 HyperText Markup Language<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/HTML\">https://en.wikipedia.org/wiki/HTML</a><br />HTML5<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/HTML5\">https://en.wikipedia.org/wiki/HTML5</a><br />IndieWeb Principles<br />\u00a0 <a href=\"https://indieweb.org/principles\">https://indieweb.org/principles</a><br />MediaWiki<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/MediaWiki\">https://en.wikipedia.org/wiki/MediaWiki</a><br />original permalink<br />\u00a0 <a href=\"https://indieweb.org/original_permalink\">https://indieweb.org/original_permalink</a><br />Q.E.D.<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/Q.E.D\">https://en.wikipedia.org/wiki/Q.E.D</a>.<br /><br />References:<br /><br /><a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_ref-1\">\u00b9</a> <a href=\"https://www.w3.org/TR/css-syntax-3/\">https://www.w3.org/TR/css-syntax-3/</a><br /><a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_ref-2\">\u00b2</a> <a href=\"https://drafts.csswg.org/css-syntax/\">https://drafts.csswg.org/css-syntax/</a><br /><a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_ref-3\">\u00b3</a> <a href=\"https://indieweb.org/this-week-in-the-indieweb\">https://indieweb.org/this-week-in-the-indieweb</a> <br /><a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_ref-4\">\u2074</a> <a href=\"https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram\">https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram</a><br /><a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_ref-5\">\u2075</a> <a href=\"https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram\">https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram</a><br /><a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_ref-6\">\u2076</a> <a href=\"https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram\">https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram</a><br /><a href=\"https://tantek.com/2024/075/t1/css-more-robust-style-element#t5Vx1_ref-7\">\u2077</a> <a href=\"https://indieweb.org/use_what_you_make\">https://indieweb.org/use_what_you_make</a>",
"text": "While an HTML style element for inline CSS needs nothing but simple start and end tags (as of HTML5 and later)\n\n<style> \np { color: red }\n</style>\n\na more robust style element requires a precise series of overlapping code comments.\n\nHere is the answer if you want a code snippet to copy & paste\n\n<style><!--/*--><![CDATA[*/ \np { color: red } /* you may delete this sample style rule */\n/*]]><!--*/--></style>\n\n\nHere is why:\n\n1. Not all HTML processors are CSS processors. While all modern browsers know how to parse CSS in style elements inside HTML, it is still quite reasonable for people to build HTML processors that do not, and many exist. There are plenty of ways to errantly or deliberately misplace markup inside a style element, like in a CSS comment, that such processors will not see, that can break them and cause unexpected and different results in different processors. Strictly speaking any use of > child combinator selector syntax should also be HTML escaped (as >) inside a style elment.\n\nThus it makes your HTML more parseable, by more processors, if you can hide the entirety of the style sheet inside the style element from such processing, including any child combinators. A CDATA section does exactly that:\n\n<style><![CDATA[ \np { color: orange } /* CDATA allows a </style> here to not close the element */\nbody > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */\n]]></style>\n\n\n2. However CSS syntax does not recognize a CDATA directive (even as of the latest published CSS Syntax Module Level 3\u00b9 or editor's draft\u00b2 as of this writing). CSS parsers may very well treat a CDATA directive as a syntax error that invalidates the subsequent style rule.\n\nThus we must hide the CDATA directive, its opening and closing markup, from CSS parsers. \u00a0CSS code comments /* ... */ can do exactly that:\n\n<style>/*<![CDATA[*/ \np { color: orange } /* CDATA allows a </style> here to not close the element */\nbody > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */\n/*]]>*/</style>\n\n\n3. This is close but still exposes HTML processors that do not process CSS to a minimal bit of content, the CSS comment opener and closer that are outside the CDATA section:\n\n/* */\n\nThis recently showed up in a draft of the This Week in The #IndieWeb newsletter\u00b3, because portions of it are automatically constructed by parsing the HTML of MediaWiki pages for content, and one of those used a MediaWiki template that included a minimal style element to style the marked up content inserted by the template. A draft of the newsletter was showing raw CSS, extracted as text from the style element by the CSS-unaware parser extracting content. I was able to hide nearly all of it using CSS comments around the CDATA section opener and closer. Except for that little bit of CSS comment noise outside the CDATA section: /* */\n\nFortunately there is one more tool in our toolbox that we can use. Simple HTML/SGML comments <!-- --> are ignored at the start and end of style sheets\u2074 (noted there as CDO-token\u2075 and CDC-token\u2076), and thus we can use those to hide the last two remaining CSS comment pieces that were leaking out, like this: <!-- /* --> and <!-- */ -->. Note that the portion of the HTML comment directives that are inside CSS comments are ignored by CSS processors, which is why this works for both processors that parse CSS and those that do not.\n\nThis last addition produces our answer, with no fewer than three different comment mechanisms (CDATA, CSS, HTML/SGML), overlapping to hide each other from different processors:\n\n<style><!--/*--><![CDATA[*/ \np { color: orange } /* CDATA allows a </style> here to not close the element */\nbody > p { margin: 1em } /* CDATA also allows an unescaped > child combinator */\n/*]]><!--*/--></style>\n\nBy replacing those informative style rules with a style rule to be deleted, we have recreated the code snippet to copy & paste from the top of the post: \n\n<style><!--/*--><![CDATA[*/ \np { color: red } /* you may delete this sample style rule */\n/*]]><!--*/--></style>\n\nQ.E.D.\n\n\nAfterword:\n\nIf you View Source on this original permalink or my home page you can see the more robust style element in a real world example, following the IndieWeb Use What You Make\u2077 principle.\n\n#CSS #style #styleElement #styleSheet #HTML #HTML5 #CSSsyntax #codeComments #CDATA #SGML #CSScomment #HTMLcomment #SGMLcomment\n\n\nGlossary:\n\nCDATA\n\u00a0 https://en.wikipedia.org/wiki/CDATA\nCSS \u2014 Cascading Style Sheets\n\u00a0 https://en.wikipedia.org/wiki/CSS\nHTML \u2014 HyperText Markup Language\n\u00a0 https://en.wikipedia.org/wiki/HTML\nHTML5\n\u00a0 https://en.wikipedia.org/wiki/HTML5\nIndieWeb Principles\n\u00a0 https://indieweb.org/principles\nMediaWiki\n\u00a0 https://en.wikipedia.org/wiki/MediaWiki\noriginal permalink\n\u00a0 https://indieweb.org/original_permalink\nQ.E.D.\n\u00a0 https://en.wikipedia.org/wiki/Q.E.D.\n\nReferences:\n\n\u00b9 https://www.w3.org/TR/css-syntax-3/\n\u00b2 https://drafts.csswg.org/css-syntax/\n\u00b3 https://indieweb.org/this-week-in-the-indieweb \n\u2074 https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram\n\u2075 https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram\n\u2076 https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram\n\u2077 https://indieweb.org/use_what_you_make"
},
"published": "2024-03-16T04:35:00+00:00",
"post-type": "note",
"_id": "40563428",
"_source": "8007",
"_is_read": false
}
While an HTML style element for inline CSS needs nothing but simple start and end tags (as of HTML5 and later)
<style>
p { margin:0 }
</style>
a more robust style element requires a precise series of overlapping code comments.
Here is the answer if you want a code snippet to copy & paste
<style><!--/*--><![CDATA[*/
p { margin:0 } /* you may delete this sample style rule */
/*]]><!--*/--></style>
Here is why:
1. Not all HTML processors are CSS processors. While all modern browsers know how to parse CSS in style elements inside HTML, it is still quite reasonable for people to build HTML processors that do not, and many exist. There are plenty of ways to errantly or deliberately misplace markup inside a style element, like in a CSS comment, that such processors will not see, that can break them and cause unexpected and different results in different processors. Strictly speaking any use of > child combinator selector syntax should also be HTML escaped (as >) inside a style elment.
Thus it makes your HTML more parseable, by more processors, if you can hide the entirety of the style sheet inside the style element from such processing, including any child combinators. A CDATA section does exactly that:
<style><![CDATA[
p { margin:0 } /* CDATA allows a </style> here to not close the element */
body > p { margin:1em } /* CDATA allows an unescaped > child combinator */
]]></style>
2. However CSS syntax does not recognize a CDATA directive (even as of the latest published CSS Syntax Module Level 3¹ or editor's draft² as of this writing). CSS parsers may very well treat a CDATA directive as a syntax error that invalidates the subsequent style rule.
Thus we must hide the CDATA directive, its opening and closing markup, from CSS parsers. CSS code comments /* ... */ can do exactly that:
<style>/*<![CDATA[*/
p { margin:0 } /* CDATA allows a </style> here to not close the element */
body > p { margin:1em } /* CDATA allows an unescaped > child combinator */
/*]]>*/</style>
3. This is close but still exposes HTML processors that do not process CSS to a minimal bit of content, the CSS comment opener and closer that are outside the CDATA section:
/* */
This recently showed up in a draft of the This Week in The #IndieWeb newsletter³, because portions of it are automatically constructed by parsing the HTML of MediaWiki pages for content, and one of those used a MediaWiki template that included a minimal style element to style the marked up content inserted by the template. A draft of the newsletter was showing raw CSS, extracted as text from the style element by the CSS-unaware parser extracting content. I was able to hide nearly all of it using CSS comments around the CDATA section opener and closer. Except for that little bit of CSS comment noise outside the CDATA section: /* */
Fortunately there is one more tool in our toolbox that we can use. Simple HTML/SGML comments <!-- --> are ignored at the start and end of style sheets⁴ (noted there as CDO-token⁵ and CDC-token⁶), and thus we can use those to hide the last two remaining CSS comment pieces that were leaking out, like this: <!-- /* --> and <!-- */ -->. Note that the portion of the HTML comment directives that are inside CSS comments are ignored by CSS processors, which is why this works for both processors that parse CSS and those that do not.
This last addition produces our answer, with no fewer than three different comment mechanisms (CDATA, CSS, HTML/SGML), overlapping to hide each other from different processors:
<style><!--/*--><![CDATA[*/
p { margin:0 } /* CDATA allows a </style> here to not close the element */
body > p { margin:1em } /* CDATA allows an unescaped > child combinator */
/*]]><!--*/--></style>
By replacing those informative style rules with a style rule to be deleted, we have recreated the code snippet to copy & paste from the top of the post:
<style><!--/*--><![CDATA[*/
p { margin:0 } /* you may delete this sample style rule */
/*]]><!--*/--></style>
Q.E.D.
Afterword:
If you View Source on this original permalink or my home page you can see the more robust style element in a real world example, following the IndieWeb Use What You Make⁷ principle.
#CSS #style #styleElement #styleSheet #HTML #HTML5 #CSSsyntax #codecomments
Glossary:
CDATA
https://en.wikipedia.org/wiki/CDATA
CSS — Cascading Style Sheets
https://en.wikipedia.org/wiki/CSS
HTML — HyperText Markup Language
https://en.wikipedia.org/wiki/HTML
HTML5
https://en.wikipedia.org/wiki/HTML5
IndieWeb Principles
https://indieweb.org/principles
MediaWiki
https://en.wikipedia.org/wiki/MediaWiki
original permalink
https://indieweb.org/original_permalink
Q.E.D.
https://en.wikipedia.org/wiki/Q.E.D.
References:
¹ https://www.w3.org/TR/css-syntax-3/
² https://drafts.csswg.org/css-syntax/
³ https://indieweb.org/this-week-in-the-indieweb
⁴ https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram
⁵ https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram
⁶ https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram
⁷ https://indieweb.org/use_what_you_make
{
"type": "entry",
"published": "2024-03-15 21:35-0700",
"url": "http://tantek.com/2024/075/t1/css-more-robust-style-element",
"category": [
"IndieWeb",
"CSS",
"style",
"styleElement",
"styleSheet",
"HTML",
"HTML5",
"CSSsyntax",
"codecomments"
],
"content": {
"text": "While an HTML style element for inline CSS needs nothing but simple start and end tags (as of HTML5 and later)\n\n<style> \np { margin:0 }\n</style>\n\na more robust style element requires a precise series of overlapping code comments.\n\nHere is the answer if you want a code snippet to copy & paste\n\n<style><!--/*--><![CDATA[*/ \np { margin:0 } /* you may delete this sample style rule */\n/*]]><!--*/--></style>\n\n\nHere is why:\n\n1. Not all HTML processors are CSS processors. While all modern browsers know how to parse CSS in style elements inside HTML, it is still quite reasonable for people to build HTML processors that do not, and many exist. There are plenty of ways to errantly or deliberately misplace markup inside a style element, like in a CSS comment, that such processors will not see, that can break them and cause unexpected and different results in different processors. Strictly speaking any use of > child combinator selector syntax should also be HTML escaped (as >) inside a style elment.\n\nThus it makes your HTML more parseable, by more processors, if you can hide the entirety of the style sheet inside the style element from such processing, including any child combinators. A CDATA section does exactly that:\n\n<style><![CDATA[ \np { margin:0 } /* CDATA allows a </style> here to not close the element */\nbody > p { margin:1em } /* CDATA allows an unescaped > child combinator */\n]]></style>\n\n\n2. However CSS syntax does not recognize a CDATA directive (even as of the latest published CSS Syntax Module Level 3\u00b9 or editor's draft\u00b2 as of this writing). CSS parsers may very well treat a CDATA directive as a syntax error that invalidates the subsequent style rule.\n\nThus we must hide the CDATA directive, its opening and closing markup, from CSS parsers. \u00a0CSS code comments /* ... */ can do exactly that:\n\n<style>/*<![CDATA[*/ \np { margin:0 } /* CDATA allows a </style> here to not close the element */\nbody > p { margin:1em } /* CDATA allows an unescaped > child combinator */\n/*]]>*/</style>\n\n\n3. This is close but still exposes HTML processors that do not process CSS to a minimal bit of content, the CSS comment opener and closer that are outside the CDATA section:\n\n/* */\n\nThis recently showed up in a draft of the This Week in The #IndieWeb newsletter\u00b3, because portions of it are automatically constructed by parsing the HTML of MediaWiki pages for content, and one of those used a MediaWiki template that included a minimal style element to style the marked up content inserted by the template. A draft of the newsletter was showing raw CSS, extracted as text from the style element by the CSS-unaware parser extracting content. I was able to hide nearly all of it using CSS comments around the CDATA section opener and closer. Except for that little bit of CSS comment noise outside the CDATA section: /* */\n\nFortunately there is one more tool in our toolbox that we can use. Simple HTML/SGML comments <!-- --> are ignored at the start and end of style sheets\u2074 (noted there as CDO-token\u2075 and CDC-token\u2076), and thus we can use those to hide the last two remaining CSS comment pieces that were leaking out, like this: <!-- /* --> and <!-- */ -->. Note that the portion of the HTML comment directives that are inside CSS comments are ignored by CSS processors, which is why this works for both processors that parse CSS and those that do not.\n\nThis last addition produces our answer, with no fewer than three different comment mechanisms (CDATA, CSS, HTML/SGML), overlapping to hide each other from different processors:\n\n<style><!--/*--><![CDATA[*/ \np { margin:0 } /* CDATA allows a </style> here to not close the element */\nbody > p { margin:1em } /* CDATA allows an unescaped > child combinator */\n/*]]><!--*/--></style>\n\nBy replacing those informative style rules with a style rule to be deleted, we have recreated the code snippet to copy & paste from the top of the post: \n\n<style><!--/*--><![CDATA[*/ \np { margin:0 } /* you may delete this sample style rule */\n/*]]><!--*/--></style>\n\nQ.E.D.\n\n\nAfterword:\n\nIf you View Source on this original permalink or my home page you can see the more robust style element in a real world example, following the IndieWeb Use What You Make\u2077 principle.\n\n#CSS #style #styleElement #styleSheet #HTML #HTML5 #CSSsyntax #codecomments\n\n\nGlossary:\n\nCDATA\n\u00a0 https://en.wikipedia.org/wiki/CDATA\nCSS \u2014 Cascading Style Sheets\n\u00a0 https://en.wikipedia.org/wiki/CSS\nHTML \u2014 HyperText Markup Language\n\u00a0 https://en.wikipedia.org/wiki/HTML\nHTML5\n\u00a0 https://en.wikipedia.org/wiki/HTML5\nIndieWeb Principles\n\u00a0 https://indieweb.org/principles\nMediaWiki\n\u00a0 https://en.wikipedia.org/wiki/MediaWiki\noriginal permalink\n\u00a0 https://indieweb.org/original_permalink\nQ.E.D.\n\u00a0 https://en.wikipedia.org/wiki/Q.E.D.\n\nReferences:\n\n\u00b9 https://www.w3.org/TR/css-syntax-3/\n\u00b2 https://drafts.csswg.org/css-syntax/\n\u00b3 https://indieweb.org/this-week-in-the-indieweb \n\u2074 https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram\n\u2075 https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram\n\u2076 https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram\n\u2077 https://indieweb.org/use_what_you_make",
"html": "While an HTML style element for inline CSS needs nothing but simple start and end tags (as of HTML5 and later)<br /><br /><style> <br />p { margin:0 }<br /></style><br /><br />a more robust style element requires a precise series of overlapping code comments.<br /><br />Here is the answer if you want a code snippet to copy & paste<br /><br /><style><!--/*--><![CDATA[*/ <br />p { margin:0 } /* you may delete this sample style rule */<br />/*]]><!--*/--></style><br /><br /><br />Here is why:<br /><br />1. Not all HTML processors are CSS processors. While all modern browsers know how to parse CSS in style elements inside HTML, it is still quite reasonable for people to build HTML processors that do not, and many exist. There are plenty of ways to errantly or deliberately misplace markup inside a style element, like in a CSS comment, that such processors will not see, that can break them and cause unexpected and different results in different processors. Strictly speaking any use of > child combinator selector syntax should also be HTML escaped (as &gt;) inside a style elment.<br /><br />Thus it makes your HTML more parseable, by more processors, if you can hide the entirety of the style sheet inside the style element from such processing, including any child combinators. A CDATA section does exactly that:<br /><br /><style><![CDATA[ <br />p { margin:0 } /* CDATA allows a </style> here to not close the element */<br />body > p { margin:1em } /* CDATA allows an unescaped > child combinator */<br />]]></style><br /><br /><br />2. However CSS syntax does not recognize a CDATA directive (even as of the latest published CSS Syntax Module Level 3<a href=\"http://tantek.com/#t5Vx1_note-1\">\u00b9</a> or editor's draft<a href=\"http://tantek.com/#t5Vx1_note-2\">\u00b2</a> as of this writing). CSS parsers may very well treat a CDATA directive as a syntax error that invalidates the subsequent style rule.<br /><br />Thus we must hide the CDATA directive, its opening and closing markup, from CSS parsers. \u00a0CSS code comments /* ... */ can do exactly that:<br /><br /><style>/*<![CDATA[*/ <br />p { margin:0 } /* CDATA allows a </style> here to not close the element */<br />body > p { margin:1em } /* CDATA allows an unescaped > child combinator */<br />/*]]>*/</style><br /><br /><br />3. This is close but still exposes HTML processors that do not process CSS to a minimal bit of content, the CSS comment opener and closer that are outside the CDATA section:<br /><br />/* */<br /><br />This recently showed up in a draft of the This Week in The #<span class=\"p-category\">IndieWeb</span> newsletter<a href=\"http://tantek.com/#t5Vx1_note-3\">\u00b3</a>, because portions of it are automatically constructed by parsing the HTML of MediaWiki pages for content, and one of those used a MediaWiki template that included a minimal style element to style the marked up content inserted by the template. A draft of the newsletter was showing raw CSS, extracted as text from the style element by the CSS-unaware parser extracting content. I was able to hide nearly all of it using CSS comments around the CDATA section opener and closer. Except for that little bit of CSS comment noise outside the CDATA section: /* */<br /><br />Fortunately there is one more tool in our toolbox that we can use. Simple HTML/SGML comments <!-- --> are ignored at the start and end of style sheets<a href=\"http://tantek.com/#t5Vx1_note-4\">\u2074</a> (noted there as CDO-token<a href=\"http://tantek.com/#t5Vx1_note-5\">\u2075</a> and CDC-token<a href=\"http://tantek.com/#t5Vx1_note-6\">\u2076</a>), and thus we can use those to hide the last two remaining CSS comment pieces that were leaking out, like this: <!-- /* --> and <!-- */ -->. Note that the portion of the HTML comment directives that are inside CSS comments are ignored by CSS processors, which is why this works for both processors that parse CSS and those that do not.<br /><br />This last addition produces our answer, with no fewer than three different comment mechanisms (CDATA, CSS, HTML/SGML), overlapping to hide each other from different processors:<br /><br /><style><!--/*--><![CDATA[*/ <br />p { margin:0 } /* CDATA allows a </style> here to not close the element */<br />body > p { margin:1em } /* CDATA allows an unescaped > child combinator */<br />/*]]><!--*/--></style><br /><br />By replacing those informative style rules with a style rule to be deleted, we have recreated the code snippet to copy & paste from the top of the post: <br /><br /><style><!--/*--><![CDATA[*/ <br />p { margin:0 } /* you may delete this sample style rule */<br />/*]]><!--*/--></style><br /><br />Q.E.D.<br /><br /><br />Afterword:<br /><br />If you View Source on this original permalink or my home page you can see the more robust style element in a real world example, following the IndieWeb Use What You Make<a href=\"http://tantek.com/#t5Vx1_note-7\">\u2077</a> principle.<br /><br />#<span class=\"p-category\">CSS</span> #<span class=\"p-category\">style</span> #<span class=\"p-category\">styleElement</span> #<span class=\"p-category\">styleSheet</span> #<span class=\"p-category\">HTML</span> #<span class=\"p-category\">HTML5</span> #<span class=\"p-category\">CSSsyntax</span> #<span class=\"p-category\">codecomments</span><br /><br /><br />Glossary:<br /><br />CDATA<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/CDATA\">https://en.wikipedia.org/wiki/CDATA</a><br />CSS \u2014 Cascading Style Sheets<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/CSS\">https://en.wikipedia.org/wiki/CSS</a><br />HTML \u2014 HyperText Markup Language<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/HTML\">https://en.wikipedia.org/wiki/HTML</a><br />HTML5<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/HTML5\">https://en.wikipedia.org/wiki/HTML5</a><br />IndieWeb Principles<br />\u00a0 <a href=\"https://indieweb.org/principles\">https://indieweb.org/principles</a><br />MediaWiki<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/MediaWiki\">https://en.wikipedia.org/wiki/MediaWiki</a><br />original permalink<br />\u00a0 <a href=\"https://indieweb.org/original_permalink\">https://indieweb.org/original_permalink</a><br />Q.E.D.<br />\u00a0 <a href=\"https://en.wikipedia.org/wiki/Q.E.D\">https://en.wikipedia.org/wiki/Q.E.D</a>.<br /><br />References:<br /><br /><a href=\"http://tantek.com/#t5Vx1_ref-1\">\u00b9</a> <a href=\"https://www.w3.org/TR/css-syntax-3/\">https://www.w3.org/TR/css-syntax-3/</a><br /><a href=\"http://tantek.com/#t5Vx1_ref-2\">\u00b2</a> <a href=\"https://drafts.csswg.org/css-syntax/\">https://drafts.csswg.org/css-syntax/</a><br /><a href=\"http://tantek.com/#t5Vx1_ref-3\">\u00b3</a> <a href=\"https://indieweb.org/this-week-in-the-indieweb\">https://indieweb.org/this-week-in-the-indieweb</a> <br /><a href=\"http://tantek.com/#t5Vx1_ref-4\">\u2074</a> <a href=\"https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram\">https://www.w3.org/TR/css-syntax-3/#stylesheet-diagram</a><br /><a href=\"http://tantek.com/#t5Vx1_ref-5\">\u2075</a> <a href=\"https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram\">https://www.w3.org/TR/css-syntax-3/#CDO-token-diagram</a><br /><a href=\"http://tantek.com/#t5Vx1_ref-6\">\u2076</a> <a href=\"https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram\">https://www.w3.org/TR/css-syntax-3/#CDC-token-diagram</a><br /><a href=\"http://tantek.com/#t5Vx1_ref-7\">\u2077</a> <a href=\"https://indieweb.org/use_what_you_make\">https://indieweb.org/use_what_you_make</a>"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "note",
"_id": "40563327",
"_source": "1",
"_is_read": false
}
The “IndieWeb” feels like coming home
In reply to: Nathaniel Daught
The IndieWeb is a movement to return to actually owning and controlling your digital presence like we did 20+ years ago.
The “IndieWeb” feels like coming home, Nathaniel Daught
It is like you read my mind. For me, IndieWeb – especially WebMention – has felt like reclaiming what we lost in our rush into the walled gardens of privately owned social media. The IndieWeb is a web of personal connections, I feel. Those walled gardens were never home. This is.
This is home.
#IndieWeb #WebMention
{
"type": "entry",
"author": {
"name": "#indieweb",
"url": "https://mastodon.social/tags/indieweb",
"photo": null
},
"url": "https://node.lordmatt.co.uk/2024/03/16/posts/replies/the-indieweb-feels-like-coming-home/",
"content": {
"html": "<p><strong>The \u201cIndieWeb\u201d feels like coming home</strong></p><p><strong>In reply to: <a href=\"https://daught.me/about/\">Nathaniel Daught</a></strong></p><blockquote><p>The <a href=\"https://indieweb.org\">IndieWeb</a> is a movement to return to actually owning and controlling your digital presence like we did 20+ years ago.</p><p><a href=\"https://daught.me/blog/2024/indie-web/\">The \u201cIndieWeb\u201d feels like coming home, Nathaniel Daught</a></p></blockquote><p>It is like you read my mind. For me, IndieWeb \u2013 especially <a href=\"https://openmentions.com/topics/indieweb/webmention/\">WebMention</a> \u2013 has felt like reclaiming what we lost in our rush into the walled gardens of privately owned social media. The IndieWeb is a web of personal connections, I feel. Those walled gardens were never home. This is. </p><p>This is home.</p><p><a class=\"u-tag u-category\" href=\"https://node.lordmatt.co.uk/tag/indieweb/\">#IndieWeb</a> <a class=\"u-tag u-category\" href=\"https://node.lordmatt.co.uk/tag/webmention/\">#WebMention</a></p>",
"text": "The \u201cIndieWeb\u201d feels like coming home\n\nIn reply to: Nathaniel DaughtThe IndieWeb is a movement to return to actually owning and controlling your digital presence like we did 20+ years ago.\n\nThe \u201cIndieWeb\u201d feels like coming home, Nathaniel DaughtIt is like you read my mind. For me, IndieWeb \u2013 especially WebMention \u2013 has felt like reclaiming what we lost in our rush into the walled gardens of privately owned social media. The IndieWeb is a web of personal connections, I feel. Those walled gardens were never home. This is. \n\nThis is home.\n\n#IndieWeb #WebMention"
},
"published": "2024-03-16T01:24:26+00:00",
"post-type": "note",
"_id": "40562287",
"_source": "8007",
"_is_read": false
}
I have my first guestbook entry! From a real visitor! Not a spammer! (blocked 3 Russian ips by now) ❤️ She made my evening 😭. #indieweb #smallweb
{
"type": "entry",
"author": {
"name": "@immarisabel",
"url": "https://indieweb.social/@immarisabel",
"photo": null
},
"url": "https://indieweb.social/@immarisabel/112101712248682641",
"content": {
"html": "<p>I have my first guestbook entry! From a real visitor! Not a spammer! (blocked 3 Russian ips by now) \u2764\ufe0f She made my evening \ud83d\ude2d. <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://indieweb.social/tags/smallweb\">#<span>smallweb</span></a></p>",
"text": "I have my first guestbook entry! From a real visitor! Not a spammer! (blocked 3 Russian ips by now) \u2764\ufe0f She made my evening \ud83d\ude2d. #indieweb #smallweb"
},
"published": "2024-03-15T20:59:40+00:00",
"post-type": "note",
"_id": "40560656",
"_source": "8007",
"_is_read": false
}
The #RSS protocol launched 25 years ago today on March 15, 1999! 
...And it's still cruising on to this day! 😁
https://en.wikipedia.org/wiki/RSS
#Indieweb #SmallWeb #Blogs
{
"type": "entry",
"author": {
"name": "@Quinn9282",
"url": "https://mas.to/@Quinn9282",
"photo": null
},
"url": "https://mas.to/@Quinn9282/112101589639289157",
"content": {
"html": "<p>The <a href=\"https://mas.to/tags/RSS\">#<span>RSS</span></a> protocol launched 25 years ago today on March 15, 1999! <img alt=\":rss:\" height=\"16\" src=\"https://files.mastodon.social/cache/custom_emojis/images/000/603/000/original/e095f80aaf0f36af.png\" title=\":rss:\" width=\"16\" /></p><p>...And it's still cruising on to this day! \ud83d\ude01</p><p><a href=\"https://en.wikipedia.org/wiki/RSS\"><span>https://</span><span>en.wikipedia.org/wiki/RSS</span><span></span></a></p><p><a href=\"https://mas.to/tags/Indieweb\">#<span>Indieweb</span></a> <a href=\"https://mas.to/tags/SmallWeb\">#<span>SmallWeb</span></a> <a href=\"https://mas.to/tags/Blogs\">#<span>Blogs</span></a></p>",
"text": "The #RSS protocol launched 25 years ago today on March 15, 1999! \n\n...And it's still cruising on to this day! \ud83d\ude01\n\nhttps://en.wikipedia.org/wiki/RSS\n\n#Indieweb #SmallWeb #Blogs"
},
"published": "2024-03-15T20:28:29+00:00",
"post-type": "note",
"_id": "40560387",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "@inautilo",
"url": "https://mastodon.social/@inautilo",
"photo": null
},
"url": "https://mastodon.social/@inautilo/112101553907877774",
"content": {
"html": "<p><a href=\"https://mastodon.social/tags/Business\">#<span>Business</span></a> <a href=\"https://mastodon.social/tags/Anniversairies\">#<span>Anniversairies</span></a><br />RSS was released 25 years ago today \u00b7 Born on March 15, 1999, and still alive and kicking <a href=\"https://ilo.im/15y9wc\"><span>https://</span><span>ilo.im/15y9wc</span><span></span></a></p><p>_____<br /><a href=\"https://mastodon.social/tags/RSS\">#<span>RSS</span></a> <a href=\"https://mastodon.social/tags/Newsfeed\">#<span>Newsfeed</span></a> <a href=\"https://mastodon.social/tags/OpenWeb\">#<span>OpenWeb</span></a> <a href=\"https://mastodon.social/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://mastodon.social/tags/Website\">#<span>Website</span></a> <a href=\"https://mastodon.social/tags/Blog\">#<span>Blog</span></a> <a href=\"https://mastodon.social/tags/Content\">#<span>Content</span></a> <a href=\"https://mastodon.social/tags/Development\">#<span>Development</span></a> <a href=\"https://mastodon.social/tags/WebDev\">#<span>WebDev</span></a> <a href=\"https://mastodon.social/tags/Frontend\">#<span>Frontend</span></a></p>",
"text": "#Business #Anniversairies\nRSS was released 25 years ago today \u00b7 Born on March 15, 1999, and still alive and kicking https://ilo.im/15y9wc\n\n_____\n#RSS #Newsfeed #OpenWeb #IndieWeb #Website #Blog #Content #Development #WebDev #Frontend"
},
"published": "2024-03-15T20:19:24+00:00",
"post-type": "note",
"_id": "40560325",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "@nhoizey",
"url": "https://mamot.fr/@nhoizey",
"photo": null
},
"url": "https://mamot.fr/@nhoizey/112101403865941672",
"content": {
"html": "<p>\ud83d\udd17 \u201cLinks Worth Sharing\u201d by <span class=\"h-card\"><a class=\"u-url\" href=\"https://mastodon.social/@matthiasott\">@<span>matthiasott</span></a></span></p><p><a href=\"https://mamot.fr/tags/IndieWeb\">#<span>IndieWeb</span></a> </p><p>\u2693\ufe0f <a href=\"https://nicolas-hoizey.com/links/2024/03/15/links-worth-sharing/\"><span>https://</span><span>nicolas-hoizey.com/links/2024/</span><span>03/15/links-worth-sharing/</span></a></p>\n<a class=\"u-mention\" href=\"https://mastodon.social/@matthiasott\"></a>",
"text": "\ud83d\udd17 \u201cLinks Worth Sharing\u201d by @matthiasott\n\n#IndieWeb \n\n\u2693\ufe0f https://nicolas-hoizey.com/links/2024/03/15/links-worth-sharing/"
},
"published": "2024-03-15T19:41:15+00:00",
"photo": [
"https://files.mastodon.social/cache/media_attachments/files/112/101/403/904/753/897/original/e4fa112cb1629889.png"
],
"post-type": "photo",
"_id": "40559956",
"_source": "8007",
"_is_read": false
}
@trinux @AbsluteBeginner yo creo que hay espacio para navegadores más sencillos, e iniciativas tipo #indieWeb / #webSencilla e incluso protocolos como #gopher y #gemini, pero necesitamos una alternativa a Chrome para hacer trámites en el Ministerio de turno o tener una videollamada, y negar la mayor nos arrastra al monopolio de Google.
Hay que buscar una solución para una alternativa generalista, al margen de lo cómodos que nos sintamos en nuestro nicho (y me incluyo, que yo soy de FFX o eww)
{
"type": "entry",
"author": {
"name": "@mgdelacroix",
"url": "https://social.ctrlz.es/@mgdelacroix",
"photo": null
},
"url": "https://social.ctrlz.es/@mgdelacroix/112101357499019717",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://masto.ai/@trinux\">@<span>trinux</span></a></span> <span class=\"h-card\"><a class=\"u-url\" href=\"https://mastodon.social/@AbsluteBeginner\">@<span>AbsluteBeginner</span></a></span> yo creo que hay espacio para navegadores m\u00e1s sencillos, e iniciativas tipo <a href=\"https://social.ctrlz.es/tags/indieWeb\">#<span>indieWeb</span></a> / <a href=\"https://social.ctrlz.es/tags/webSencilla\">#<span>webSencilla</span></a> e incluso protocolos como <a href=\"https://social.ctrlz.es/tags/gopher\">#<span>gopher</span></a> y <a href=\"https://social.ctrlz.es/tags/gemini\">#<span>gemini</span></a>, pero necesitamos una alternativa a Chrome para hacer tr\u00e1mites en el Ministerio de turno o tener una videollamada, y negar la mayor nos arrastra al monopolio de Google.</p><p>Hay que buscar una soluci\u00f3n para una alternativa generalista, al margen de lo c\u00f3modos que nos sintamos en nuestro nicho (y me incluyo, que yo soy de FFX o eww)</p>\n<a class=\"u-mention\" href=\"https://masto.ai/@trinux\"></a>\n<a class=\"u-mention\" href=\"https://mastodon.social/@AbsluteBeginner\"></a>",
"text": "@trinux @AbsluteBeginner yo creo que hay espacio para navegadores m\u00e1s sencillos, e iniciativas tipo #indieWeb / #webSencilla e incluso protocolos como #gopher y #gemini, pero necesitamos una alternativa a Chrome para hacer tr\u00e1mites en el Ministerio de turno o tener una videollamada, y negar la mayor nos arrastra al monopolio de Google.\n\nHay que buscar una soluci\u00f3n para una alternativa generalista, al margen de lo c\u00f3modos que nos sintamos en nuestro nicho (y me incluyo, que yo soy de FFX o eww)"
},
"published": "2024-03-15T19:29:27+00:00",
"post-type": "note",
"_id": "40559836",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "@cory",
"url": "https://social.lol/@cory",
"photo": null
},
"url": "https://social.lol/@cory/112101358457864897",
"content": {
"html": "<p>\ud83d\udd17: The \u201cIndieWeb\u201d feels like coming home <a href=\"https://social.lol/tags/Tech\">#<span>Tech</span></a> <a href=\"https://social.lol/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://social.lol/tags/WebDev\">#<span>WebDev</span></a> <a href=\"https://daught.me/blog/2024/indie-web/\"><span>https://</span><span>daught.me/blog/2024/indie-web/</span><span></span></a></p>",
"text": "\ud83d\udd17: The \u201cIndieWeb\u201d feels like coming home #Tech #IndieWeb #WebDev https://daught.me/blog/2024/indie-web/"
},
"published": "2024-03-15T19:29:42+00:00",
"post-type": "note",
"_id": "40559837",
"_source": "8007",
"_is_read": false
}
Hey, if you have a few minutes, I'd appreciate help making some examples of simple personal web pages made with https://simplepagebuilder.app that I can feature on the site.
More details: https://stefanbohacek.online/@stefan/112095377362949802
Thank you!
#indieweb #PersonalWebsite
{
"type": "entry",
"author": {
"name": "@stefan",
"url": "https://stefanbohacek.online/@stefan",
"photo": null
},
"url": "https://stefanbohacek.online/@stefan/112101011731503904",
"content": {
"html": "<p>Hey, if you have a few minutes, I'd appreciate help making some examples of simple personal web pages made with <a href=\"https://simplepagebuilder.app\"><span>https://</span><span>simplepagebuilder.app</span><span></span></a> that I can feature on the site.</p><p>More details: <a href=\"https://stefanbohacek.online/@stefan/112095377362949802\"><span>https://</span><span>stefanbohacek.online/@stefan/1</span><span>12095377362949802</span></a></p><p>Thank you!</p><p><a href=\"https://stefanbohacek.online/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://stefanbohacek.online/tags/PersonalWebsite\">#<span>PersonalWebsite</span></a></p>",
"text": "Hey, if you have a few minutes, I'd appreciate help making some examples of simple personal web pages made with https://simplepagebuilder.app that I can feature on the site.\n\nMore details: https://stefanbohacek.online/@stefan/112095377362949802\n\nThank you!\n\n#indieweb #PersonalWebsite"
},
"published": "2024-03-15T18:01:31+00:00",
"post-type": "note",
"_id": "40559243",
"_source": "8007",
"_is_read": false
}
Any candidates to try this brand-new static sites hosting platform ?
https://pages.casa/
Yes, I need a logo for it ! This 🏠 is just 🤢 😅
I accept your proposition 😘
#indieweb #smolweb #smallweb
{
"type": "entry",
"author": {
"name": "@adele",
"url": "https://phpc.social/@adele",
"photo": null
},
"url": "https://phpc.social/@adele/112100951362095976",
"content": {
"html": "<p>Any candidates to try this brand-new static sites hosting platform ?</p><p><a href=\"https://pages.casa/\"><span>https://</span><span>pages.casa/</span><span></span></a></p><p>Yes, I need a logo for it ! This \ud83c\udfe0 is just \ud83e\udd22 \ud83d\ude05 <br />I accept your proposition \ud83d\ude18 </p><p><a href=\"https://phpc.social/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://phpc.social/tags/smolweb\">#<span>smolweb</span></a> <a href=\"https://phpc.social/tags/smallweb\">#<span>smallweb</span></a></p>",
"text": "Any candidates to try this brand-new static sites hosting platform ?\n\nhttps://pages.casa/\n\nYes, I need a logo for it ! This \ud83c\udfe0 is just \ud83e\udd22 \ud83d\ude05 \nI accept your proposition \ud83d\ude18 \n\n#indieweb #smolweb #smallweb"
},
"published": "2024-03-15T17:46:10+00:00",
"post-type": "note",
"_id": "40559078",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "@nfd",
"url": "https://social.lol/@nfd",
"photo": null
},
"url": "https://social.lol/@nfd/112100711243089366",
"content": {
"html": "<p><a href=\"https://social.lol/tags/Webmention\">#<span>Webmention</span></a> might be the next thing I want to get setup on my site\u2026 \ud83e\udd14</p><p><a href=\"https://rknight.me/blog/adding-webmentions-to-your-site/\"><span>https://</span><span>rknight.me/blog/adding-webment</span><span>ions-to-your-site/</span></a></p><p><a href=\"https://social.lol/tags/Eleventy\">#<span>Eleventy</span></a> <a href=\"https://social.lol/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://social.lol/tags/SmallWeb\">#<span>SmallWeb</span></a> <a href=\"https://social.lol/tags/Neocities\">#<span>Neocities</span></a></p>",
"text": "#Webmention might be the next thing I want to get setup on my site\u2026 \ud83e\udd14\n\nhttps://rknight.me/blog/adding-webmentions-to-your-site/\n\n#Eleventy #IndieWeb #SmallWeb #Neocities"
},
"published": "2024-03-15T16:45:06+00:00",
"post-type": "note",
"_id": "40558418",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "@jcrabapple",
"url": "https://dmv.community/@jcrabapple",
"photo": null
},
"url": "https://dmv.community/@jcrabapple/112100143170141739",
"content": {
"html": "<p>Link Drop - March 15, 2024 - Cool As Heck</p><p><a href=\"https://cool-as-heck.blog/posts/link-drop-march-15-2024\"><span>https://</span><span>cool-as-heck.blog/posts/link-d</span><span>rop-march-15-2024</span></a></p><p><a href=\"https://dmv.community/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://dmv.community/tags/linkdrop\">#<span>linkdrop</span></a></p>",
"text": "Link Drop - March 15, 2024 - Cool As Heck\n\nhttps://cool-as-heck.blog/posts/link-drop-march-15-2024\n\n#indieweb #linkdrop"
},
"published": "2024-03-15T14:20:38+00:00",
"post-type": "note",
"_id": "40557192",
"_source": "8007",
"_is_read": false
}
@casraf @brentsimmons Oh nice! I’d definitely be interested in seeing MicroSub supported too; it’s a relatively new protocol, but it’s super interesting and deeply connected with the #IndieWeb movement! https://indieweb.org/Microsub
{
"type": "entry",
"author": {
"name": "@byjp",
"url": "https://hachyderm.io/@byjp",
"photo": null
},
"url": "https://hachyderm.io/@byjp/112099966611417832",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://fosstodon.org/@casraf\">@<span>casraf</span></a></span> <span class=\"h-card\"><a class=\"u-url\" href=\"https://indieweb.social/@brentsimmons\">@<span>brentsimmons</span></a></span> Oh nice! I\u2019d definitely be interested in seeing MicroSub supported too; it\u2019s a relatively new protocol, but it\u2019s super interesting and deeply connected with the <a href=\"https://hachyderm.io/tags/IndieWeb\">#<span>IndieWeb</span></a> movement! <a href=\"https://indieweb.org/Microsub\"><span>https://</span><span>indieweb.org/Microsub</span><span></span></a></p>\n<a class=\"u-mention\" href=\"https://fosstodon.org/@casraf\"></a>\n<a class=\"u-mention\" href=\"https://indieweb.social/@brentsimmons\"></a>",
"text": "@casraf @brentsimmons Oh nice! I\u2019d definitely be interested in seeing MicroSub supported too; it\u2019s a relatively new protocol, but it\u2019s super interesting and deeply connected with the #IndieWeb movement! https://indieweb.org/Microsub"
},
"published": "2024-03-15T13:35:44+00:00",
"post-type": "note",
"_id": "40556872",
"_source": "8007",
"_is_read": false
}
I put together a list of all the website directories I know by now. You can submit your own personal website to them and of course find other cool sites:
https://maurice-renck.de/blog/2024/website-directories
#openweb #indieweb #directory #PersonalSites
{
"type": "entry",
"author": {
"name": "@mauricerenck",
"url": "https://mastodon.online/@mauricerenck",
"photo": null
},
"url": "https://mastodon.online/@mauricerenck/112099731241476400",
"content": {
"html": "<p>I put together a list of all the website directories I know by now. You can submit your own personal website to them and of course find other cool sites:</p><p><a href=\"https://maurice-renck.de/blog/2024/website-directories\"><span>https://</span><span>maurice-renck.de/blog/2024/web</span><span>site-directories</span></a></p><p><a href=\"https://mastodon.online/tags/openweb\">#<span>openweb</span></a> <a href=\"https://mastodon.online/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://mastodon.online/tags/directory\">#<span>directory</span></a> <a href=\"https://mastodon.online/tags/PersonalSites\">#<span>PersonalSites</span></a></p>",
"text": "I put together a list of all the website directories I know by now. You can submit your own personal website to them and of course find other cool sites:\n\nhttps://maurice-renck.de/blog/2024/website-directories\n\n#openweb #indieweb #directory #PersonalSites"
},
"published": "2024-03-15T12:35:52+00:00",
"post-type": "note",
"_id": "40556348",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "#indieweb",
"url": "https://mastodon.social/tags/indieweb",
"photo": null
},
"url": "https://beko.famkos.net/2024/03/15/15629113/",
"content": {
"html": "<p>\u2764\ufe0f <a href=\"https://starrwulfe.xyz/2024/02/on-the-subject-of-connecting-federated-social-media-networks/\">https://starrwulfe.xyz/2024/02/on-the-subject-of-connecting-federated-social-media-networks/</a></p><p>So much this.</p><p><a href=\"https://beko.famkos.net/2024/03/15/15629113/\">https://beko.famkos.net/2024/03/15/15629113/</a></p><p><a class=\"u-tag u-category\" href=\"https://beko.famkos.net/tag/activitypub/\">#ActivityPub</a> <a class=\"u-tag u-category\" href=\"https://beko.famkos.net/tag/indieweb/\">#IndieWeb</a></p>",
"text": "\u2764\ufe0f https://starrwulfe.xyz/2024/02/on-the-subject-of-connecting-federated-social-media-networks/\n\nSo much this.\n\nhttps://beko.famkos.net/2024/03/15/15629113/\n\n#ActivityPub #IndieWeb"
},
"published": "2024-03-15T09:05:20+00:00",
"post-type": "note",
"_id": "40554915",
"_source": "8007",
"_is_read": false
}
{
"type": "entry",
"author": {
"name": "Neil Mather",
"url": "https://doubleloop.net/",
"photo": null
},
"url": "https://doubleloop.net/2024/03/14/2024-03-14/",
"published": "2024-03-14T05:27:10+00:00",
"content": {
"html": "<ul><li>Read: <a href=\"https://commonplace.doubleloop.net/reframing-and-simplifying-the-idea-of-how-to-keep-a-zettelkasten.html#ID-709bbf74-8275-4c43-ac68-c3f0f548d9f6\">Reframing and simplifying the idea of how to keep a Zettelkasten</a></li>\n\n\n\n<li>Contemplating whether I should send webmentions from my digital garden.\n<ul><li>Maybe, maybe not.</li>\n\n\n\n<li>There\u2019s plenty of ways to send webmentions from a static site, plenty of people doing it.</li>\n\n\n\n<li>So I could, but I wonder if I <strong>should</strong>.</li>\n\n\n\n<li>Perhaps webmentions should only be sent when I post a more considered long-form article, or when I post something to my stream.</li>\n\n\n\n<li>Not sure.</li>\n\n\n\n<li><a href=\"https://commonplace.doubleloop.net/should-i-send-webmentions-from-my-digital-garden.html#ID-4d7dafc7-7e05-458b-984b-8652f2fb795a\">Should I send webmentions from my digital garden?</a></li>\n</ul></li>\n</ul><ul><li>Listened: <a href=\"https://commonplace.doubleloop.net/how-to-talk-about-avoiding-waste-with-keep-britain-tidy.html#ID-74c3afe3-5cb4-4684-b2f9-57e1114da5eb\">How to talk about avoiding waste, with Keep Britain Tidy</a>\n<ul><li>Most people think recycling is all you need to do to prevent waste.</li>\n\n\n\n<li>Reframe the message and move people\u2019s consciousness up the waste hierarchy.</li>\n\n\n\n<li><a href=\"https://commonplace.doubleloop.net/buy-nothing-new-month.html#ID-fd5048cb-1d10-4275-a8d8-8ea429f1a97d\">Buy Nothing New Month</a>.</li>\n\n\n\n<li>Really interesting discussion around societal norms and reuse (e.g. what happens when you give second-hand presents at kids\u2019 birthday parties\u2026)</li>\n</ul></li>\n</ul>",
"text": "Read: Reframing and simplifying the idea of how to keep a Zettelkasten\n\n\n\nContemplating whether I should send webmentions from my digital garden.\nMaybe, maybe not.\n\n\n\nThere\u2019s plenty of ways to send webmentions from a static site, plenty of people doing it.\n\n\n\nSo I could, but I wonder if I should.\n\n\n\nPerhaps webmentions should only be sent when I post a more considered long-form article, or when I post something to my stream.\n\n\n\nNot sure.\n\n\n\nShould I send webmentions from my digital garden?\n\nListened: How to talk about avoiding waste, with Keep Britain Tidy\nMost people think recycling is all you need to do to prevent waste.\n\n\n\nReframe the message and move people\u2019s consciousness up the waste hierarchy.\n\n\n\nBuy Nothing New Month.\n\n\n\nReally interesting discussion around societal norms and reuse (e.g. what happens when you give second-hand presents at kids\u2019 birthday parties\u2026)"
},
"name": "2024-03-14",
"post-type": "article",
"_id": "40554442",
"_source": "1895",
"_is_read": false
}
This weekend’s #indieweb tinkering on the #jekyll site:
- adding #IndieAuth
- adding #WebMentions
Wish me luck.
{
"type": "entry",
"author": {
"name": "@pd",
"url": "https://pkm.social/@pd",
"photo": null
},
"url": "https://pkm.social/@pd/112098499260116012",
"content": {
"html": "<p>This weekend\u2019s <a href=\"https://pkm.social/tags/indieweb\">#<span>indieweb</span></a> tinkering on the <a href=\"https://pkm.social/tags/jekyll\">#<span>jekyll</span></a> site:</p><p>- adding <a href=\"https://pkm.social/tags/IndieAuth\">#<span>IndieAuth</span></a><br />- adding <a href=\"https://pkm.social/tags/WebMentions\">#<span>WebMentions</span></a></p><p>Wish me luck.</p>",
"text": "This weekend\u2019s #indieweb tinkering on the #jekyll site:\n\n- adding #IndieAuth\n- adding #WebMentions\n\nWish me luck."
},
"published": "2024-03-15T07:22:34+00:00",
"post-type": "note",
"_id": "40554382",
"_source": "8007",
"_is_read": false
}
RSS
My all-time favorite RSS reader is NetNewsWire by @brentsimmons!
It runs on Apple desktop computers and mobile devices, syncs via various services, and is free and open source.
And it comes with a special feature for distraction-free reading: the magical reader view that can be enabled by default on a per-feed basis. So handy!
https://netnewswire.com
#NetNewsWire #RSS #RSSReader #OpenWeb #IndieWeb #opensource
{
"type": "entry",
"author": {
"name": "@nrchtct",
"url": "https://vis.social/@nrchtct",
"photo": null
},
"url": "https://vis.social/@nrchtct/112098469078948308",
"content": {
"html": "<p>RSS</p><p>My all-time favorite RSS reader is NetNewsWire by <span class=\"h-card\"><a class=\"u-url\" href=\"https://indieweb.social/@brentsimmons\">@<span>brentsimmons</span></a></span>!</p><p>It runs on Apple desktop computers and mobile devices, syncs via various services, and is free and open source. </p><p>And it comes with a special feature for distraction-free reading: the magical reader view that can be enabled by default on a per-feed basis. So handy!</p><p><a href=\"https://netnewswire.com\"><span>https://</span><span>netnewswire.com</span><span></span></a></p><p><a href=\"https://vis.social/tags/NetNewsWire\">#<span>NetNewsWire</span></a> <a href=\"https://vis.social/tags/RSS\">#<span>RSS</span></a> <a href=\"https://vis.social/tags/RSSReader\">#<span>RSSReader</span></a> <a href=\"https://vis.social/tags/OpenWeb\">#<span>OpenWeb</span></a> <a href=\"https://vis.social/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://vis.social/tags/opensource\">#<span>opensource</span></a></p>\n<a class=\"u-mention\" href=\"https://indieweb.social/@brentsimmons\"></a>",
"text": "RSSMy all-time favorite RSS reader is NetNewsWire by @brentsimmons!\n\nIt runs on Apple desktop computers and mobile devices, syncs via various services, and is free and open source. \n\nAnd it comes with a special feature for distraction-free reading: the magical reader view that can be enabled by default on a per-feed basis. So handy!\n\nhttps://netnewswire.com\n\n#NetNewsWire #RSS #RSSReader #OpenWeb #IndieWeb #opensource"
},
"published": "2024-03-15T07:14:53+00:00",
"post-type": "note",
"_id": "40554383",
"_source": "8007",
"_is_read": false
}
Someone just posted a link to an IndieWeb article by a guy who is very big with IndieWeb folks, and I get why, I follow him too. But he talks about how there’s “some” truth to the idea that IndieWeb isn’t accessible to non-nerds, and that’s why we need more things like Indiekit.
I’m thinking oh wow, we ha... eilloh.net
{
"type": "entry",
"author": {
"name": "Hollie Baggins-Kenobi",
"url": "https://eilloh.net/",
"photo": "https://avatars.micro.blog/avatars/2024/01/22639.jpg"
},
"url": "https://eilloh.net/2024/03/14/someone-just-posted.html",
"content": {
"html": "Someone just posted a link to an IndieWeb article by a guy who is very big with IndieWeb folks, and I get why, I follow him too. But he talks about how there\u2019s \u201csome\u201d truth to the idea that IndieWeb isn\u2019t accessible to non-nerds, and that\u2019s why we need more things like Indiekit.\n\nI\u2019m thinking oh wow, we ha... <a href=\"https://eilloh.net/2024/03/14/someone-just-posted.html\">eilloh.net</a>",
"text": "Someone just posted a link to an IndieWeb article by a guy who is very big with IndieWeb folks, and I get why, I follow him too. But he talks about how there\u2019s \u201csome\u201d truth to the idea that IndieWeb isn\u2019t accessible to non-nerds, and that\u2019s why we need more things like Indiekit.\n\nI\u2019m thinking oh wow, we ha... eilloh.net"
},
"published": "2024-03-15T02:57:39+00:00",
"post-type": "note",
"_id": "40554311",
"_source": "7224",
"_is_read": false
}