<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Personal blog. Mostly photos.</description><title>Daniel Pietzsch</title><generator>Tumblr (3.0; @danielpietzsch)</generator><link>https://blog.danielpietzsch.com/</link><item><title>Nifty text highlight styling</title><description>&lt;p&gt;Wanted to jot down this nice text highlighting CSS snippet I just discovered on &lt;a href="https://basecamp.com"&gt;basecamp.com&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/190e3bce51935fdbeb24b56930064475/tumblr_inline_prnajjNZNh1qzm9x2_540.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;With its varying opacity, it&amp;rsquo;s simulating a person&amp;rsquo;s variable pressure when marking text on an actual piece of paper. I like!&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s the CSS:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;border-radius: 1em 0 1em 0;
background-image: linear-gradient(-100deg, rgba(250,247,133,0.3), rgba(250,247,133,0.7) 95%, rgba(250,247,133,0.1));
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Instead of using &lt;code&gt;&amp;lt;span class="highlight"&amp;gt;&lt;/code&gt;, though, you should probably rather simply use the &lt;code&gt;&amp;lt;mark&amp;gt;&lt;/code&gt; tag, which is more semantically correct.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/185045401263</link><guid>https://blog.danielpietzsch.com/post/185045401263</guid><pubDate>Tue, 21 May 2019 23:00:15 +0200</pubDate><category>365writings</category><category>css</category><category>software development</category><category>writings</category></item><item><title>Super simple Dark Mode</title><description>&lt;p&gt;I just read the article &lt;a href="https://webkit.org/blog/8840/dark-mode-support-in-webkit/"&gt;“Dark Mode Support in Webkit” on the Webkit blog&lt;/a&gt;. Among other things, it describes how you can opt-in to have your website auto-darkened by Webkit (which means Safari in this case):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Not all web content is simple. For this reason Safari and WebKit do not auto-darken web content — documents will need to opt-in to dark mode. The main way to signal that your content supports dark mode it to adopt the new &lt;code&gt;color-scheme&lt;/code&gt; style property [&amp;hellip;].&lt;/p&gt;
  
  &lt;p&gt;Specifying the values &lt;code&gt;light&lt;/code&gt; and &lt;code&gt;dark&lt;/code&gt; on the root element lets the engine know both modes are supported by the document. This changes the default text and background colors of the page to match the current system appearance. Also standard form controls, scrollbars, and other named system colors change their look automatically.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, to opt-in, you add this bit of CSS:&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;:root {
  supported-color-schemes: light dark; /* For current Safari versions */
  color-scheme: light dark; /* Available with Safari TP 81 */
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will tell the browser that your website supports both light and dark modes, and will automatically darken your website &lt;a href="https://blog.danielpietzsch.com/post/183572983263/dark-mode-based-on-os-preference"&gt;when dark mode is selected in the OS preferences&lt;/a&gt;. Without any additional CSS (via &lt;code&gt;@media (prefers-color-scheme: dark)&lt;/code&gt;). That&amp;rsquo;s a super simple and convenient way to have a dark theme.&lt;/p&gt;

&lt;h3&gt;Existing issues&lt;/h3&gt;

&lt;p&gt;[UPDATE 28.05.2019]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/xeenon/status/1131925519006519296"&gt;Got some feedback from the original article&amp;rsquo;s author&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;However, it is not an auto-dark mode. That property gives you dark mode ready defaults for the body background and base text color, along with form controls. Any custom colors will need handled with the &lt;code&gt;prefers-color-scheme&lt;/code&gt; media query.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I also re-read the article and the &lt;a href="https://drafts.csswg.org/css-color-adjust-1/"&gt;spec regarding this topic&lt;/a&gt;. And the issues listed below are no bugs. According to the spec, the user agent should indeed only change the background and text colour plus form elements, and not much more.&lt;/p&gt;

&lt;p&gt;So, I think the below still applies. &lt;em&gt;But&lt;/em&gt;, that it&amp;rsquo;s not &amp;ldquo;perfect&amp;rdquo; is intentional and merely gives you a mechanism to opt-in to support a very basic version and is expected to be further extended and adjusted via custom CSS statements inside a &lt;code&gt;prefers-color-scheme&lt;/code&gt; block.&lt;/p&gt;

&lt;p&gt;[UPDATE END]&lt;/p&gt;

&lt;p&gt;This automatic dark mode is not perfect. While updating my &lt;a href="https://fl.danielpietzsch.com/"&gt;Focal Length Equivalent&lt;/a&gt; page to use it (&lt;a href="https://blog.danielpietzsch.com/post/183732341578/automatic-dark-mode-for-focal-length-equivalents"&gt;which previously had a complete custom – but very similar – dark theme already&lt;/a&gt;), I noticed a few things:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;code&gt;:hover&lt;/code&gt; and other pseudo-classes are not darkened.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;border-color&lt;/code&gt; and &lt;code&gt;outline-color&lt;/code&gt; are not darkened.&lt;/li&gt;
&lt;li&gt;Link colour don&amp;rsquo;t seem to get adjusted.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;For &lt;code&gt;border-color&lt;/code&gt; and &lt;code&gt;outline-color&lt;/code&gt;, I could remove those statements from the standard (light mode) CSS to rely on the page&amp;rsquo;s standard colours. Then, the borders got auto-darkened, too. For the &lt;code&gt;:hover&lt;/code&gt;-issues, I kept my custom CSS rules around.&lt;/p&gt;

&lt;h3&gt;Verdict&lt;/h3&gt;

&lt;p&gt;Relying on this auto-dark mode reduced the number of CSS statements I had to overwrite in the &lt;code&gt;@media (prefers-color-scheme: dark)&lt;/code&gt; section of my stylesheet and made it much simpler.&lt;/p&gt;

&lt;p&gt;Generally, for simple sites likes this one, I think it&amp;rsquo;s very handy to be able to rely on Webkit to do most of the dark-mode work for you. And then only adjust things where you see the need for.&lt;/p&gt;

&lt;p&gt;I am definitely going to experiment with this some more.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/184782093393</link><guid>https://blog.danielpietzsch.com/post/184782093393</guid><pubDate>Fri, 10 May 2019 16:13:11 +0200</pubDate><category>365writings</category><category>writings</category><category>css</category><category>software development</category></item><item><title>clamp()</title><description>&lt;p&gt;Just learned about the CSS &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/clamp"&gt;clamp()&lt;/a&gt; function. This would actually be really handy for specifying &lt;a href="https://blog.danielpietzsch.com/post/182034125803/css-width-based-font-size"&gt;a width based font size&lt;/a&gt;, without the need for an extra media-query.&lt;/p&gt;&lt;p&gt;Unfortunately, &lt;a href="https://caniuse.com/#feat=css-math-functions"&gt;this does not have any browser support right now&lt;/a&gt;.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/184768012718</link><guid>https://blog.danielpietzsch.com/post/184768012718</guid><pubDate>Fri, 10 May 2019 00:02:24 +0200</pubDate><category>365writings</category><category>journal</category><category>css</category><category>software development</category></item><item><title>I amended my photo journal’s design once again. I wanted to make all images fit completely on...</title><description>&lt;p&gt;I amended my &lt;a href="http://photojournal.danielpietzsch.com"&gt;photo journal’s&lt;/a&gt; design once again. I wanted to make all images fit completely on screen, no matter what the actual dimensions of the image are.&lt;/p&gt;&lt;p&gt;That images wouldn’t fit was mainly an issue with photos shot in portrait orientation or in square format. If a screen was wider than it’s tall – typical for most non-mobile devices – and you had less than 960px available vertical space, those images would be cropped. That’s no longer the case. And I find it much more enjoyable when the whole picture fits on screen.&lt;/p&gt;&lt;p&gt;As a minor downside, this update also decreases the size of landscape-oriented images, which would still have fitted previously. But this way, everything’s aligning well and portrait and landscape images still have the same size.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/184744811653</link><guid>https://blog.danielpietzsch.com/post/184744811653</guid><pubDate>Wed, 08 May 2019 23:59:46 +0200</pubDate><category>365writings</category><category>writings</category><category>journal</category><category>software development</category><category>css</category></item><item><title>Automatic dark mode for focal length equivalents</title><description>&lt;p&gt;&lt;a href="http://utilities.danielpietzsch.com/fl/"&gt;My little Focal Length Equivalents tool&lt;/a&gt; now features “automatic dark mode” on supporting operating systems and browsers. Meaning, when you have your operating system set to prefer a “dark” styling – like macOS Mojave offers for example – and you are using a &lt;a href="https://caniuse.com/#feat=prefers-color-scheme"&gt;compatible browser&lt;/a&gt;, the page will show with a dark background and bright text. If your operating system is set to something else, it will show the default white background and black text.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.danielpietzsch.com/post/183572983263/dark-mode-based-on-os-preference"&gt;Unlike for my blog&lt;/a&gt;, this solution uses CSS only. I simply put the required media query at the end of the CSS file(s) and by doing so, overwriting existing default colours with the ones used for dark mode.&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;/* AT THE END OF THE CSS FILE. DEFAULT STYLING ABOVE THIS MEDIA QUERY */
@media (prefers-color-scheme: dark) {
  body {
    color: #DDD;
    background-color: #222;
  }

  a { color: #88F; }
  a:visited { color: #AAF; }

  body &amp;gt; footer {
    border-top-color: white;
  }
  /* ETC ETC */
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Overwriting the colours like this could become unmaintainable in a more complex setup, but for this little page, this works just fine.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/183732341578</link><guid>https://blog.danielpietzsch.com/post/183732341578</guid><pubDate>Tue, 26 Mar 2019 23:57:21 +0100</pubDate><category>writings</category><category>365writings</category><category>software development</category><category>css</category></item><item><title>Dark Mode based on OS preference</title><description>&lt;p&gt;&lt;a href="http://blog.danielpietzsch.com/post/151876850458/dark-mode"&gt;This blog has had a dark mode for a while now&lt;/a&gt;. Toggling it on and off could be done manually, and the selected preference would be stored in your browser for the next time you return.&lt;/p&gt;

&lt;p&gt;I’ve now extended the script that handles the switching to respect your operating system’s preference for dark mode. This uses &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia"&gt;&lt;code&gt;matchMedia&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener"&gt;&lt;code&gt;MediaQueryList.addListener&lt;/code&gt;&lt;/a&gt; to do so. &lt;a href="https://static.tumblr.com/ffyaisg/0C5pomvfb/stylesheetswitcher.js"&gt;Take a look at the whole script&lt;/a&gt;, if you like.&lt;/p&gt;

&lt;p&gt;I don&amp;rsquo;t know, if any other operating systems other than macOS Mojave have a &amp;ldquo;Dark Mode&amp;rdquo; preference. But, if you happen to run Mojave and use the Safari 12.1 Beta or Technology Preview, you can try this out yourself. But here&amp;rsquo;s a little GIF of what it looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/07c6cd6571a2def610c633b5c7206063/tumblr_inline_pomxj5ZGd71qzm9x2_540.gif" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;The whole usability around this feature is not ideal currently. For example, I should probably have a 3-way switch – On, Off, Auto – instead of a simple checkbox toggle. And I should make an &amp;ldquo;Auto&amp;rdquo; setting work without JavaScript. But I didn&amp;rsquo;t have the time for this tonight, and so this will be a little project for another time.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/183572983263</link><guid>https://blog.danielpietzsch.com/post/183572983263</guid><pubDate>Tue, 19 Mar 2019 23:45:21 +0100</pubDate><category>writings</category><category>365writings</category><category>software development</category><category>javascript</category><category>css</category></item><item><title>&lt;noscript&gt; in &lt;head&gt;</title><description>&lt;p&gt;If you didn&amp;rsquo;t know, &lt;a href="https://validator.w3.org"&gt;it&amp;rsquo;s perfectly valid&lt;/a&gt; to use the &lt;code&gt;&amp;lt;noscript&amp;gt;&lt;/code&gt; tag inside the &amp;ldquo; element of a HTML page. And &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript"&gt;you&amp;rsquo;re allowed to include &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; tags as its children&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I use this for &lt;a href="https://fl.danielpietzsch.com/"&gt;my little focal length equivalent utility&lt;/a&gt;, by loading an additional stylesheet via a &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag: when a visitor has JavaScript disabled, it loads the style for &lt;a href="http://blog.danielpietzsch.com/post/182254338583/horizontally-scrolling-table-with-fixed-headings"&gt;the alternative &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;&lt;/a&gt; that&amp;rsquo;s also wrapped in a &lt;code&gt;&amp;lt;noscript&amp;gt;&lt;/code&gt; element.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/183073736328</link><guid>https://blog.danielpietzsch.com/post/183073736328</guid><pubDate>Tue, 26 Feb 2019 17:55:11 +0100</pubDate><category>writings</category><category>365writings</category><category>css</category><category>html</category><category>software development</category></item><item><title>Horizontally scrolling table with fixed headings</title><description>&lt;p&gt;For my &lt;a href="https://fl.danielpietzsch.com/"&gt;Focal Length Equivalent utility&lt;/a&gt;, I created a alternative view for when you don&amp;rsquo;t have JavaScript enabled (as you should, if you can).&lt;/p&gt;

&lt;p&gt;Instead of dynamically showing the conversion based on the position of the range slider input element, I simply show a good old table with calculated equivalents at pre-defined focal lengths.&lt;/p&gt;

&lt;p&gt;I wanted this table to list the focal lengths vertically – with one film- or sensor-format on one &lt;em&gt;row&lt;/em&gt; – so you can easily parse the result. As such a table gets easily too wide for the parent elements container, I wanted&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;the table to be scrollable horizontally and&lt;/li&gt;
&lt;li&gt;have the format name headings keep their position, so that you never lose track of which row represents which format.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Here’s the simplified table markup:&lt;/p&gt;

&lt;pre&gt;&lt;code class="HTML"&gt;&amp;lt;figure&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tbody&amp;gt;&amp;lt;!-- ... --&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th scope="row"&amp;gt;35mm&amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;10 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;16 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;24 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;28 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;35 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;50 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;85 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;100 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;135 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;200 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;300 mm&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;500 mm&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;&amp;lt;!-- ... --&amp;gt;&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/figure&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The “scrolling” bit is easily done: simply put a &lt;code&gt;overflow-x: scroll;&lt;/code&gt; on the table’s container element, which in my case is a &lt;code&gt;&amp;lt;figure&amp;gt;&lt;/code&gt; element (a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; or any other block element would also do of course, if the &lt;code&gt;&amp;lt;figure&amp;gt;&lt;/code&gt; semantic doesn’t work for you):&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;figure {
  overflow-x: scroll;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In order for the film-format name headings to keep their position, I resorted to a fairly new value of the CSS &lt;code&gt;position&lt;/code&gt; property: &lt;code&gt;sticky&lt;/code&gt;. I added this to the &lt;code&gt;th&lt;/code&gt; selectors, in combination with &lt;code&gt;left: 0;&lt;/code&gt; so the headings stay at their original positions:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;figure table tr th {
  position: sticky;
  left: 0;
  // you might also want a bg color, so the th covers the table
  // that scrolls through underneath
  background-color: white;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can take a look at this when you &lt;a href="https://fl.danielpietzsch.com/"&gt;go to the tool&lt;/a&gt; and disable JavaScript in your browser. Or you can simply look at this table here:&lt;/p&gt;

&lt;style&gt;
figure.hs {
  overflow-x: scroll;
  margin: 0;
  -webkit-overflow-scrolling: touch;
}

figure.hs table {
  border-collapse: collapse;
}

figure.hs table td, figure.hs table th {
  padding: 0.5em 0.7em;
}

figure.hs table tr th {
  position: -webkit-sticky;
  position: sticky;
  left: 0;
  background-color: white;
  text-align: right;
  white-space: nowrap;
}

figure.hs table tr td {
  font-family: monospace;
  text-align: right;
}

figure.hs table col:nth-of-type(even) {
  background: #eee;
}

figure.hs table td {
  white-space: nowrap;
}

figure.hs table tr.full-frame {
  outline: 1px dashed black;
}

figure.hs table tr:hover {
  background-color: rgba(238, 238, 238, .4);
}

figure.hs table col:hover {
  font-size: 2em;
}
&lt;/style&gt;&lt;figure class="hs"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope="row"&gt;Micro 4/3&lt;/th&gt;
            &lt;td&gt;5 mm&lt;/td&gt;
            &lt;td&gt;8 mm&lt;/td&gt;
            &lt;td&gt;12 mm&lt;/td&gt;
            &lt;td&gt;15 mm&lt;/td&gt;
            &lt;td&gt;18 mm&lt;/td&gt;
            &lt;td&gt;26 mm&lt;/td&gt;
            &lt;td&gt;44 mm&lt;/td&gt;
            &lt;td&gt;52 mm&lt;/td&gt;
            &lt;td&gt;70 mm&lt;/td&gt;
            &lt;td&gt;104 mm&lt;/td&gt;
            &lt;td&gt;156 mm&lt;/td&gt;
            &lt;td&gt;260 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;APS-C&lt;/th&gt;
            &lt;td&gt;7 mm&lt;/td&gt;
            &lt;td&gt;11 mm&lt;/td&gt;
            &lt;td&gt;16 mm&lt;/td&gt;
            &lt;td&gt;19 mm&lt;/td&gt;
            &lt;td&gt;23 mm&lt;/td&gt;
            &lt;td&gt;33 mm&lt;/td&gt;
            &lt;td&gt;57 mm&lt;/td&gt;
            &lt;td&gt;67 mm&lt;/td&gt;
            &lt;td&gt;90 mm&lt;/td&gt;
            &lt;td&gt;133 mm&lt;/td&gt;
            &lt;td&gt;200 mm&lt;/td&gt;
            &lt;td&gt;333 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr class="full-frame"&gt;&lt;th scope="row"&gt;35mm&lt;/th&gt;
            &lt;td&gt;10 mm&lt;/td&gt;
            &lt;td&gt;16 mm&lt;/td&gt;
            &lt;td&gt;24 mm&lt;/td&gt;
            &lt;td&gt;28 mm&lt;/td&gt;
            &lt;td&gt;35 mm&lt;/td&gt;
            &lt;td&gt;50 mm&lt;/td&gt;
            &lt;td&gt;85 mm&lt;/td&gt;
            &lt;td&gt;100 mm&lt;/td&gt;
            &lt;td&gt;135 mm&lt;/td&gt;
            &lt;td&gt;200 mm&lt;/td&gt;
            &lt;td&gt;300 mm&lt;/td&gt;
            &lt;td&gt;500 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;6x4.5&lt;/th&gt;
            &lt;td&gt;16 mm&lt;/td&gt;
            &lt;td&gt;26 mm&lt;/td&gt;
            &lt;td&gt;39 mm&lt;/td&gt;
            &lt;td&gt;45 mm&lt;/td&gt;
            &lt;td&gt;56 mm&lt;/td&gt;
            &lt;td&gt;81 mm&lt;/td&gt;
            &lt;td&gt;137 mm&lt;/td&gt;
            &lt;td&gt;161 mm&lt;/td&gt;
            &lt;td&gt;217 mm&lt;/td&gt;
            &lt;td&gt;322 mm&lt;/td&gt;
            &lt;td&gt;483 mm&lt;/td&gt;
            &lt;td&gt;805 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;6x6&lt;/th&gt;
            &lt;td&gt;18 mm&lt;/td&gt;
            &lt;td&gt;29 mm&lt;/td&gt;
            &lt;td&gt;44 mm&lt;/td&gt;
            &lt;td&gt;51 mm&lt;/td&gt;
            &lt;td&gt;64 mm&lt;/td&gt;
            &lt;td&gt;92 mm&lt;/td&gt;
            &lt;td&gt;155 mm&lt;/td&gt;
            &lt;td&gt;183 mm&lt;/td&gt;
            &lt;td&gt;247 mm&lt;/td&gt;
            &lt;td&gt;366 mm&lt;/td&gt;
            &lt;td&gt;548 mm&lt;/td&gt;
            &lt;td&gt;915 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;6x7&lt;/th&gt;
            &lt;td&gt;20 mm&lt;/td&gt;
            &lt;td&gt;32 mm&lt;/td&gt;
            &lt;td&gt;48 mm&lt;/td&gt;
            &lt;td&gt;56 mm&lt;/td&gt;
            &lt;td&gt;71 mm&lt;/td&gt;
            &lt;td&gt;101 mm&lt;/td&gt;
            &lt;td&gt;171 mm&lt;/td&gt;
            &lt;td&gt;202 mm&lt;/td&gt;
            &lt;td&gt;272 mm&lt;/td&gt;
            &lt;td&gt;404 mm&lt;/td&gt;
            &lt;td&gt;604 mm&lt;/td&gt;
            &lt;td&gt;1009 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;6x8&lt;/th&gt;
            &lt;td&gt;22 mm&lt;/td&gt;
            &lt;td&gt;35 mm&lt;/td&gt;
            &lt;td&gt;53 mm&lt;/td&gt;
            &lt;td&gt;62 mm&lt;/td&gt;
            &lt;td&gt;77 mm&lt;/td&gt;
            &lt;td&gt;110 mm&lt;/td&gt;
            &lt;td&gt;187 mm&lt;/td&gt;
            &lt;td&gt;220 mm&lt;/td&gt;
            &lt;td&gt;297 mm&lt;/td&gt;
            &lt;td&gt;440 mm&lt;/td&gt;
            &lt;td&gt;660 mm&lt;/td&gt;
            &lt;td&gt;1100 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;6x9&lt;/th&gt;
            &lt;td&gt;23 mm&lt;/td&gt;
            &lt;td&gt;37 mm&lt;/td&gt;
            &lt;td&gt;56 mm&lt;/td&gt;
            &lt;td&gt;65 mm&lt;/td&gt;
            &lt;td&gt;82 mm&lt;/td&gt;
            &lt;td&gt;117 mm&lt;/td&gt;
            &lt;td&gt;198 mm&lt;/td&gt;
            &lt;td&gt;233 mm&lt;/td&gt;
            &lt;td&gt;315 mm&lt;/td&gt;
            &lt;td&gt;467 mm&lt;/td&gt;
            &lt;td&gt;700 mm&lt;/td&gt;
            &lt;td&gt;1167 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;4x5&lt;/th&gt;
            &lt;td&gt;36 mm&lt;/td&gt;
            &lt;td&gt;57 mm&lt;/td&gt;
            &lt;td&gt;85 mm&lt;/td&gt;
            &lt;td&gt;99 mm&lt;/td&gt;
            &lt;td&gt;124 mm&lt;/td&gt;
            &lt;td&gt;177 mm&lt;/td&gt;
            &lt;td&gt;301 mm&lt;/td&gt;
            &lt;td&gt;354 mm&lt;/td&gt;
            &lt;td&gt;478 mm&lt;/td&gt;
            &lt;td&gt;708 mm&lt;/td&gt;
            &lt;td&gt;1061 mm&lt;/td&gt;
            &lt;td&gt;1769 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;8x10&lt;/th&gt;
            &lt;td&gt;71 mm&lt;/td&gt;
            &lt;td&gt;113 mm&lt;/td&gt;
            &lt;td&gt;170 mm&lt;/td&gt;
            &lt;td&gt;198 mm&lt;/td&gt;
            &lt;td&gt;248 mm&lt;/td&gt;
            &lt;td&gt;354 mm&lt;/td&gt;
            &lt;td&gt;601 mm&lt;/td&gt;
            &lt;td&gt;707 mm&lt;/td&gt;
            &lt;td&gt;955 mm&lt;/td&gt;
            &lt;td&gt;1415 mm&lt;/td&gt;
            &lt;td&gt;2122 mm&lt;/td&gt;
            &lt;td&gt;3537 mm&lt;/td&gt;
          &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;a href="https://fl.danielpietzsch.com/style_noscript.css"&gt;Here&amp;rsquo;s the full CSS&lt;/a&gt;. &lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/182254338583</link><guid>https://blog.danielpietzsch.com/post/182254338583</guid><pubDate>Wed, 23 Jan 2019 23:40:45 +0100</pubDate><category>writings</category><category>365writings</category><category>css</category><category>software development</category></item><item><title>Simple CSS system font stack</title><description>&lt;p&gt;For tools and utilities – like &lt;a href="http://utilities.danielpietzsch.com/fl/"&gt;my focal length equivalent site&lt;/a&gt; for example – I like the idea of using the &lt;abbr title="User Interface"&gt;UI&lt;/abbr&gt; font of the operating system it is running on. The site’s typography better blends in with the OS that way and hence makes the site seem more familiar to its visitors.&lt;/p&gt;

&lt;p&gt;Here’s the simple CSS statement I’m using:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;font-family: system-ui, sans-serif;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;system-ui&lt;/code&gt; &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/font-family"&gt;seems to be the new standardised value for using the default operating system font&lt;/a&gt;. &lt;a href="https://caniuse.com/#search=system-ui"&gt;It’s not supported in all browsers, but coverage is not bad at all&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My chosen fallback is simply &lt;code&gt;sans-serif&lt;/code&gt;. I don’t think there’s any OS that’s using a &lt;em&gt;serif&lt;/em&gt; font on the UI. Also, specifying the popular &lt;code&gt;Helvetica, Arial&lt;/code&gt; in addition is pretty much redundant, as one of them is the default (and probably preferred) &lt;code&gt;sans-serif&lt;/code&gt; font on its platform anyway.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/182112957808</link><guid>https://blog.danielpietzsch.com/post/182112957808</guid><pubDate>Fri, 18 Jan 2019 17:10:21 +0100</pubDate><category>writings</category><category>365writings</category><category>software development</category><category>css</category><category>typography</category></item><item><title>CSS width-based font size</title><description>&lt;p&gt;For one-column responsive layouts – like this blog for example – I like using width-based font sizes. Using the &lt;code&gt;vw&lt;/code&gt; (&lt;strong&gt;v&lt;/strong&gt;iew &lt;strong&gt;w&lt;/strong&gt;idth) unit, the font size automatically scales based on the width of the viewport. It’s perfectly responsive without the need for media query breakpoints (at least initially, see below).&lt;/p&gt;

&lt;p&gt;Here’s what I found to be a good calculation:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;body {
  // 1em minimum font size (usually 16px) plus
  // 0.7% of the browser window’s total width
  font-size: calc(1em + 0.7vw);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This however stops working as intended, once the viewport starts becoming wider than the container the text resides in. It’s very common (for me anyway) to specify a maximum width of the main element that holds the text. But &lt;code&gt;vw&lt;/code&gt; takes into account the width of &lt;em&gt;the whole browser window&lt;/em&gt;, which inappropriately keeps increasing the font size, while &lt;em&gt;the container width&lt;/em&gt; remains at the maximum width specified.&lt;/p&gt;

&lt;p&gt;For example, this blog currently specifies a &lt;code&gt;max-width&lt;/code&gt; of 700 pixels for its main content. So, I’d like to calculate font size based on the container width of 700px instead of the whole browser window width:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;@media (min-width: 701px) {
  body {
    font-size: calc(1em + 700px * 0.007);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;However, since the calculation is static, I ended up simply calculating it myself in &lt;code&gt;em&lt;/code&gt;s and use that:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;@media (min-width: 701px) {
  body {
    font-size: 1.306em;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Can&amp;rsquo;t we just get &lt;code&gt;max-font-size&lt;/code&gt;?&lt;/p&gt;

&lt;h3&gt;A note on CSS variables&lt;/h3&gt;

&lt;p&gt;While deciding on these statements above, I also tried out CSS variables to store certain values like the &lt;code&gt;max-width&lt;/code&gt; of the container etc. to calculate the font-size like so:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;:root {
  --container-max-width: 100vw;
  --base-font-size: 1em;
  --container-fraction: 0.007; /* 0.7% */
}

body {
  font-size: calc(
    var(--base-font-size) +
    var(--container-fraction) *
    var(--container-max-width));
}

@media (min-width: 701px) {
  body {
    --container-max-width: 700px;
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But with this I&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;need a breakpoint &lt;em&gt;anyway&lt;/em&gt; to either redefine a variable or the calculation and&lt;/li&gt;
&lt;li&gt;I’d need additional fallback statements for browsers that don’t understand CSS vars.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;So, I decided against using them. For a more complex project, this might be a different story, but for a simple site with a pretty static design, that’d be total overkill and backwards in my opinion.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/182034125803</link><guid>https://blog.danielpietzsch.com/post/182034125803</guid><pubDate>Tue, 15 Jan 2019 17:47:43 +0100</pubDate><category>writings</category><category>365writings</category><category>software development</category><category>css</category><category>typography</category></item><item><title>Unit-less CSS line-height</title><description>&lt;p&gt;I recently learned that it’s very practical to use a unit-less number to specify the CSS line-height. Unlike using a unit – like &lt;code&gt;em&lt;/code&gt;, for example – this will make the line-height dependent on the text’s &lt;code&gt;font-size&lt;/code&gt;, instead of being an absolute value.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s a little example.&lt;/p&gt;

&lt;p&gt;The markup (excerpt):&lt;/p&gt;

&lt;pre&gt;&lt;code class="HTML"&gt;&amp;lt;body&amp;gt;
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  &amp;lt;p&amp;gt;
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
  &amp;lt;/p&amp;gt;

  &amp;lt;blockquote&amp;gt;
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
  &amp;lt;/blockquote&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And here&amp;rsquo;s the CSS &lt;em&gt;with&lt;/em&gt; unit, and the corresponding screenshot:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;body {
  font-size: 1.5em; // 24px
  line-height: 1.5em; // 36px
}
p          { font-size: 1.5em; } // 36px, line-height still at 36px
blockquote { font-size: 0.8em; } // 19.2px, line-height still at 36px
&lt;/code&gt;&lt;/pre&gt;

&lt;figure data-orig-height="350" data-orig-width="695" data-orig-src="https://64.media.tumblr.com/66aad6e2722ae240ac0c26f8e68ce12b/tumblr_inline_pl6uieMAXH1qzm9x2_1280.png"&gt;&lt;img src="https://64.media.tumblr.com/67a3412fe30486537ba5c1fcc0090da2/tumblr_inline_pl6uo5G61s1qzm9x2_540.png" data-orig-height="350" data-orig-width="695" data-orig-src="https://64.media.tumblr.com/66aad6e2722ae240ac0c26f8e68ce12b/tumblr_inline_pl6uieMAXH1qzm9x2_1280.png"/&gt;&lt;figcaption&gt;Line spacing with em unit&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;And here&amp;rsquo;s the CSS &lt;em&gt;without&lt;/em&gt; unit. This looks far more balanced:&lt;/p&gt;

&lt;pre&gt;&lt;code class="CSS"&gt;body {
  font-size: 1.5em; // 24px
  line-height: 1.5; // 36px
}
p          { font-size: 1.5em; } // 36px,   line-height: 54px
blockquote { font-size: 0.8em; } // 19.2px, line-height: 28px
&lt;/code&gt;&lt;/pre&gt;

&lt;figure data-orig-height="390" data-orig-width="695" data-orig-src="https://64.media.tumblr.com/5291730344496fba179859d4d2ccd470/tumblr_inline_pl6uj7iRXy1qzm9x2_1280.png"&gt;&lt;img src="https://64.media.tumblr.com/295476ab1779a398395cb423872e9605/tumblr_inline_pl6uo6ReCm1qzm9x2_540.png" data-orig-height="390" data-orig-width="695" data-orig-src="https://64.media.tumblr.com/5291730344496fba179859d4d2ccd470/tumblr_inline_pl6uj7iRXy1qzm9x2_1280.png"/&gt;&lt;figcaption&gt;Line spacing without unit&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Using a unit-less number seems to be a better default, because the text generally looks better when its line height is based on its font size. I seem to need less &lt;code&gt;line-height&lt;/code&gt; statements in total and the typography looks generally more appealing.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/181934215198</link><guid>https://blog.danielpietzsch.com/post/181934215198</guid><pubDate>Fri, 11 Jan 2019 23:39:05 +0100</pubDate><category>writings</category><category>365writings</category><category>software development</category><category>css</category><category>typography</category></item><item><title>Heading font update</title><description>&lt;p&gt;As I start adding content to this blog more regularly, I thought I update – and I think improve – its design a little. Today I updated the headings and navigation links.&lt;/p&gt;

&lt;p&gt;While I was previously using a single serif font for the whole site, I now introduced a second font for the mentioned elements: &amp;ldquo;Helvetica Neue Condensed Bold&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;I think this font is a good pairing to the serif body font. The upper-case Helvetica more clearly separates posts from one another and makes navigation links stand out more.
I often think a two-font serif/sans-serif pairing looks good and I&amp;rsquo;m glad I now found one that I like using fairly common fonts. I particularly like it because of the condensed variant (my thanks goes to &lt;a href="https://www.zeldman.com"&gt;zeldman.com&lt;/a&gt; for the inspiration).&lt;/p&gt;

&lt;h3&gt;Implementation&lt;/h3&gt;

&lt;p&gt;During implementation, I noticed it wasn&amp;rsquo;t very consistent to implement across Mac/iOS browsers, though.&lt;/p&gt;

&lt;p&gt;Normally the following CSS should have been enough in my opinion:&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-stretch: condensed;
text-transform: uppercase;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;For Safari and Firefox on a Mac, this is enough indeed and for iOS as well. But Chrome on the Mac wouldn&amp;rsquo;t show the condensed variant of the font. I had to add the condensed variant (&lt;a href="https://stackoverflow.com/a/5612781/210307"&gt;its Postscript name to be precise&lt;/a&gt;) as a &lt;code&gt;font-family&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;font-family: "HelveticaNeue-CondensedBold", "Helvetica Neue", Helvetica, Arial, sans-serif;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This made Chrome (and Opera) show the same condensed version on a Mac as the other two browsers. For Safari however, this &lt;em&gt;overwrites&lt;/em&gt; the &lt;code&gt;"Helvetica Neue"&lt;/code&gt; + &lt;code&gt;font-stretch&lt;/code&gt; statement again. But Firefox seems to &lt;em&gt;ignore&lt;/em&gt; the additional &lt;code&gt;font-family&lt;/code&gt; and still uses the &lt;code&gt;font-stretch&lt;/code&gt; statement.&lt;/p&gt;

&lt;p&gt;Anyhow, this works now and I thought I share this little CSS-inconsistency finding here.&lt;/p&gt;

&lt;p&gt;In a future update I might look into having Android and Windows show a condensed font, but for now I&amp;rsquo;m fine with the fallbacks in this font stack.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/181688397513</link><guid>https://blog.danielpietzsch.com/post/181688397513</guid><pubDate>Thu, 03 Jan 2019 22:42:06 +0100</pubDate><category>writings</category><category>365writings</category><category>software development</category><category>css</category><category>fonts</category><category>typography</category></item><item><title>Tumblr theme tip: only select photos of a certain orientation with pure CSS</title><description>&lt;p&gt;Here’s a little CSS-snippet that let’s you select only photos of a certain orientation in your Tumblr theme.&lt;/p&gt;

&lt;p&gt;A little warning up-front: it’s not foolproof. It relies on that you post high-resolution photos at a size that fills &lt;a href="https://www.tumblr.com/docs/en/photo_troubleshooting"&gt;Tumblr’s maximum photo dimensions&lt;/a&gt;, which means, landscape photos should be at least 1280px wide and portrait photos should be 1920px tall.&lt;/p&gt;

&lt;p&gt;&lt;ins datetime="2015-04-29"&gt;&lt;strong&gt;Update 29.04.2015&lt;/strong&gt;: I was wrong with assuming portrait photos are always 1920px high. They of course also max out at 1280px in width. So I&amp;rsquo;ve updated the post to still make it work.&lt;/ins&gt;&lt;/p&gt;

&lt;p&gt;So, here&amp;rsquo;s how to do it:&lt;/p&gt;

&lt;p&gt;The HTML &lt;code&gt;img&lt;/code&gt;-tag must specify the &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; attributes. Like this, for example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;img src="{PhotoURL-HighRes}" width="{PhotoWidth-HighRes}" height="{PhotoHeight-HighRes}" alt="{PhotoAlt}"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This gives you the ability to select images of a certain orientation with a combination of the &lt;a href="http://www.w3.org/TR/selectors/#attribute-selectors"&gt;CSS attribute-selectors&lt;/a&gt; and the &lt;a href="http://www.w3.org/TR/selectors/#negation"&gt;negation pseudo-class&lt;/a&gt;. &lt;ins datetime="2015-04-29"&gt;Assuming your photos are always 1280px wide – no matter if they’re landscape or portrait – you’ll need to specify a &lt;code&gt;:not&lt;/code&gt;-selector for each aspect ratio’s height you’re going to use.&lt;br/&gt;
So, for example, for a 2:3-ratio, the height would be 1920px and hence the selector would need to reflect that.&lt;/ins&gt;
Here&amp;rsquo;s an example how I select only landscape photos&lt;ins datetime="2015-04-29"&gt; by excluding images that have a portrait orientation and have an aspect ratio of 2:3 and 3:4&lt;/ins&gt;. I use this to make landscape images wider than the otherwise 700px-wide container:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/* only for displays wider than 900px */
@media (min-width: 900px) {
  /* selects landscape &amp;lt;img&amp;gt;s by selecting only the ones that are 1280px wide, and not 1920px tall */
  main .post.photo.photos img[width="1280"]:not([height="1920"]):not([height="1707"]) {
    max-width: 900px;
    margin-left: -100px;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;For selecting only landscape photos, you can just use &lt;code&gt;img[height="1920"]&lt;/code&gt;&lt;ins datetime="2015-04-29"&gt;&lt;code&gt;img[height="1707"]&lt;/code&gt;&lt;/ins&gt;.&lt;/p&gt;

&lt;p&gt;Again, this won&amp;rsquo;t work, if you do not upload high-res images. But if you do and want to style photos differently based on their orientation, this might be a good-enough solution for you, too.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/116022189328</link><guid>https://blog.danielpietzsch.com/post/116022189328</guid><pubDate>Fri, 10 Apr 2015 14:09:16 +0200</pubDate><category>writings</category><category>tumblr</category><category>tips</category><category>css</category><category>software development</category></item><item><title>I found the first search result for “IE7...</title><description>&lt;img src="https://64.media.tumblr.com/tumblr_l190zzDxL21qa3r7do1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I found the first search result for “&lt;a href="http://www.google.co.nz/search?client=safari&amp;rls=en&amp;q=IE7+inline-block&amp;ie=UTF-8&amp;oe=UTF-8&amp;redir_esc=&amp;ei=VH_PS7exGIHAsgOK4_DsBg"&gt;IE7 inline-block&lt;/a&gt;” funny.&lt;/p&gt;</description><link>https://blog.danielpietzsch.com/post/539261701</link><guid>https://blog.danielpietzsch.com/post/539261701</guid><pubDate>Thu, 22 Apr 2010 00:55:11 +0200</pubDate><category>IE7</category><category>css</category></item><item><title>webkitbits:

The brilliant Paul Irish built a CSS3 rule...</title><description>&lt;img src="https://64.media.tumblr.com/tumblr_l0ce1xqPJu1qzynf0o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.webkitbits.com/post/496055317/the-brilliant-paul-irish-built-a-css3-rule" class="tumblr_blog"&gt;webkitbits&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The brilliant &lt;a href="http://paulirish.com/"&gt;Paul Irish&lt;/a&gt; built a CSS3 rule generating web app that he calls, “&lt;a href="http://css3please.com/"&gt;CSS3, Please!&lt;/a&gt;” Using automated vendor specific code, you can make &lt;code&gt;box-shadow&lt;/code&gt;, &lt;code&gt;gradient&lt;/code&gt;, &lt;code&gt;rgba&lt;/code&gt;, even &lt;code&gt;rotate&lt;/code&gt;, work in IE, Mozilla and WebKit.&lt;/p&gt;

&lt;p&gt;The great news is that this is merely version 1.0. &lt;a href="http://paulirish.com/2010/introducing-css3please/"&gt;Read his write-up on PaulIrish.com&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://blog.danielpietzsch.com/post/515433396</link><guid>https://blog.danielpietzsch.com/post/515433396</guid><pubDate>Mon, 12 Apr 2010 12:42:31 +0200</pubDate><category>css3</category><category>css</category><category>links</category><category>software development</category><category>software</category></item></channel></rss>
