<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="278224" data-post-id="278224">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="BartOtten" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/BartOtten/120/25440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  BartOtten
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><strong>Disclaimer</strong><br>
This is my review of chapter <span class="hashtag-raw">#1</span>. I am a Tailwind noob and still in the predicted “ugh”-phase and this review will likely reflect so.</p>
<h1><a name="p-278224-chapter-1-getting-started-with-tailwind-1" class="anchor" href="#p-278224-chapter-1-getting-started-with-tailwind-1" aria-label="Heading link" rel="nofollow"></a>Chapter 1: Getting Started with Tailwind</h1>
<p>Tailwind uses a CLI to extract class names that you use in your code which match certain Tailwind patterns and generates CSS for you based on those findings. It’s does so fairly naive, not checking if the ‘pattern’ is actually used for CSS. <code>My text about m-4</code> would trigger the inclusion of <code>.m-4 { margin: 1rem;}</code>. The book calls it “set up to run fast” and “not try and guess”.</p>
<blockquote>
<p>This seems a bit hacky to me and the authors seems to know the audience as he defends this behaviour (Note the <em>British</em> spelling!) in the next two paragraphs. However, to me, “try and guess” is not the only option for being fast. Treesitter is fast and knows what is what without “try and guess” so what Tailwind does is taking shortcuts / skipping hard parts. And Tailwind class names being “odd enough” and “a few extra accidental classes don’t matter” are not the best point to be made. Even if true, it feels like the author is defending a weak point of Tailwind (CLI) a bit too much.</p>
</blockquote>
<h2><a name="p-278224-adding-tailwind-too-your-app-2" class="anchor" href="#p-278224-adding-tailwind-too-your-app-2" aria-label="Heading link" rel="nofollow"></a>Adding Tailwind too Your App.</h2>
<p>It comes with the disclaimer that this section might be outdated soon, but still it’s good a general overview is provided. It does the job of showing what bolts are needed and is easily adaptable to not React/Webpack apps.</p>
<blockquote>
<p>At the end Tailwind modifiers are mentioned and where to place them in the import CSS. As I am still unknown about modifiers, it confuses me a bit as I have no use for that info at  the time.</p>
</blockquote>
<h2><a name="p-278224-quick-start-3" class="anchor" href="#p-278224-quick-start-3" aria-label="Heading link" rel="nofollow"></a>Quick Start</h2>
<p>This one got me dazzled and not in a good way. It starts with some very simple HTML which it expanded in the next iteration. Somehow, a <code>class="flex"</code> sneaks in with the second iteration without being mentioned at all. However, that’s only the start. In the next iteration the author really adds some styling to the example saying “The Tailwind classes I’m using do a <em>pretty good job of representing my intend</em>”.</p>
<p>It might be just me, but I see <em>no</em> mapping between intent and the classes at all. “flex” is no intend and how is “order-last” a good representation of “put the logo to the right”? It’s simply the same as with normal CSS: you have your intend and have to figure out how to get to it. Tailwind is doing <em>nothing</em> over CSS in the given example. It then continues to add more classes -which feel like shorthand inline CSS- to the example.</p>
<p>ps. <code>margin: 1rem; padding: 1rem</code> is closer to intend then <code>m-4 p-4</code> when you want a <code>margin</code> and a <code>padding</code> of <code>1rem</code>.</p>
<p>Just to finish it off it ends with “but the process didn’t involve us putting a Tailwind class in and being surprised that it affected something on the page we weren’t expecting.” No, no unexpected cascade(!) results but neither would someone have those with inline CSS.</p>
<h2><a name="p-278224-conclusion-chapter-1-4" class="anchor" href="#p-278224-conclusion-chapter-1-4" aria-label="Heading link" rel="nofollow"></a>Conclusion chapter 1</h2>
<p>This chapter did not convince me in any way. It felt a bit “some things are not good but they are still good cause it doesn’t matter”. It also takes the argument against CSS that is gives unexpected results, but does so with stuff CSS will do just as fine without</p>
<ul>
<li>installation procedure</li>
<li>need of a fast parser</li>
<li>maybe some accidental extra classes</li>
</ul>
<p>How about the other readers?<br>
<a class="mention" href="/u/blakedietz" rel="nofollow">@blakedietz</a><br>
<a class="mention" href="/u/kevinschweikert" rel="nofollow">@kevinschweikert</a><br>
<a class="mention" href="/u/lume" rel="nofollow">@Lume</a><br>
<a class="mention" href="/u/maxmannen" rel="nofollow">@maxmannen</a><br>
<a class="mention" href="/u/andyl" rel="nofollow">@AndyL</a><br>
<a class="mention" href="/u/bdarla" rel="nofollow">@bdarla</a><br>
<a class="mention" href="/u/bigtom" rel="nofollow">@BigTom</a><br>
<a class="mention" href="/u/dch" rel="nofollow">@dch</a><br>
<a class="mention" href="/u/stefanchrobot" rel="nofollow">@stefanchrobot</a><br>
<a class="mention" href="/u/victorbjorklund" rel="nofollow">@victorbjorklund</a><br>
<a class="mention" href="/u/w0rd-driven" rel="nofollow">@w0rd-driven</a></p>
<p>Did they feel the same way about this chapter? Did I miss something important in this chapter which might change my opinion on it? Let me know!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278224" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-278224" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278224"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="278752" data-post-id="278752">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kevinschweikert" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kevinschweikert/120/26866_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kevinschweikert
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey <a class="mention" href="/u/bartotten" rel="nofollow">@BartOtten</a>,</p>
<p>thanks for the extensive summary of the first chapter. I was also thrown off by the <code>class=flex</code> but think that is there by accident, because at that point there shouldn’t be any classes in the markup. And I also think, that there could have been a better example for how to show the first use of a few Tailwind classes, for example a simple Button with some styles added one after another to see how to build up the classes.</p>
<p>I didn’t post anything since this book club started, so I want to apologize and add some of my thoughts about Tailwind now.</p>
<p>A while ago I tried Tailwind for a personal prototype of mine, but I didn’t like it and reverted to good old classic CSS after a while. But watching <a href="https://youtu.be/9-rqBLjr5Eo?t=935" rel="noopener nofollow ugc">Chris McCords Talk</a> (Timestamped) about the new Phoenix CoreComponents and the default Tailwind classes, it clicked for me. I really recommend the 12 minutes about the Tailwind part of his talk. There will be “class soup” but when you use the benefits of a component framework, then it will make sense and it has a few additional advantages.<br>
We started a project at work and the frontend is using Tailwind. It takes some discipline to put everything in components and not just throw Tailwind classes all around.</p>
<p>I will continue with chapter 2 today and hope that with reading the book to gain some more insights how to use Tailwind more efficiently and productively. Have a nice weekend, everyone!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278752" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-278752" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278752"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="278765" data-post-id="278765">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="BartOtten" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/BartOtten/120/25440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  BartOtten
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You’re welcome. I deliberately stayed away from other information sources about Tailwind as I knew this book club would start. So for the time being this book is gonna be my “source of truth” and I will judge Tailwind by it. Not to say that when this book won’t succeed in convincing me I won’t have another look at Tailwind.</p>
<blockquote>
<p><strong>Disclaimer</strong><br>
This is my review of chapter <span class="hashtag-raw">#2</span> . I am a Tailwind noob and still in the predicted “ugh”-phase and this review will likely reflect so.</p>
</blockquote>
<h1><a name="p-278765-chapter-2-tailwind-basics-1" class="anchor" href="#p-278765-chapter-2-tailwind-basics-1" aria-label="Heading link" rel="nofollow"></a>Chapter 2: Tailwind Basics</h1>
<p>This chapter starts with a little introduction about the naming of classes in in Tailwind, and how utility class names differ from semantic class names. It then goes on to tell why and how Tailwind can work with large sites.</p>
<p>It lists a few advantages I will not summarize here (you have to read the book!). But one of the advantages is that Tailwind can use “modifiers” to define special behavior for things such as “hover and differently sized screens”. This is impossible with inline CSS. <strong>I consider this advantage a knock-out for inline CSS.</strong> But this major difference it not mentioned.</p>
<blockquote>
<p>Not for the first time, the claim is made that with Tailwind the scope of changes is exceptionally clear. So far there has not been an example to proof how it differs from other CSS solutions. It also mentions the class names of Tailwind being “cryptic” at first; (almost) conflicting with the <em>“The Tailwind classes I’m using do a <em>pretty good job of representing my intend</em>”</em> of the first chapter; something I already wrote about.</p>
</blockquote>
<p>The first part of this chapter ends with the notion that with Tailwind you can create CSS classes from a list of utilities, but advises to leave it up to the  front-end stack you are using (which hopefully already uses some de-duplication pattern)</p>
<p>The second part and third part handle some very basic things like naming convention and reset CSS.</p>
<h2><a name="p-278765-duplication-2" class="anchor" href="#p-278765-duplication-2" aria-label="Heading link" rel="nofollow"></a>Duplication</h2>
<p>This section starts with the advise given earlier: use whatever you already use to prevent duplication. For React devs this means: create a React component with the styling in it.</p>
<blockquote>
<p>This section makes me laugh. Can’t help it but it seems utterly clumsy.</p>
<ul>
<li>For React 3 components are created: Header, SubHeader and <strong>SubSub</strong>Header. The next example uses a plain JS function named <code>title</code> to return a list of ultility classes. Let’s apply those to H6: SubSubSubSubSubHeader and subSubSubSubSubTitle()! Guess we are back at “naming things is hard”.</li>
<li>Then two examples in Ruby on Rail are shown. One is to create a function (just like JS) and the other one uses an ERB partial saying “the syntax is a bit weird”.</li>
<li>Glad there is a solution to all the madness: using the css directive <span class="mention">@apply</span>.</li>
</ul>
<p>What I’ve learned so far:</p>
<ul>
<li>The solution to prevent duplication requires you to <strong>come up with names</strong>.</li>
<li>Creating components/partials can cause code with weird syntax AND you still need to <strong>come up with those names</strong>.</li>
<li>When all gets ugly, you can use <code>@apply</code>…just know you will have to…<strong>come up with some names</strong>.</li>
</ul>
<p><strong>I feel like we are going in circles, just so Tailwind can get away with “duplication is not an issue” and “with Tailwind you don’t have to come up with names for your shared CSS properties”.</strong></p>
</blockquote>
<p>Glad those names are not CSS names cause those were really hard to come up with according to Tailwind <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
<p>Next up: The <span class="mention">@apply</span> directive.<br>
Just to make this one clear I copy the code block:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@layer component {
   .title {@apply text, text-6xl}
   .subtitle {@apply text, text-4xl}
   .subsubtitle {@apply text, text-lg}
}
</code></pre>
<p>Looks a awful lot like LESS and SASS, doesn’t it? Except of course the names. These are Tailwind names not LESS or SASS names and certainly not CSS names cause those were ‘really hard to come up with’. <img src="https://forum.elixirforum.com/images/emoji/apple/confused.png?v=15" title=":confused:" class="emoji" alt=":confused:" loading="lazy" width="20" height="20"></p>
<p>You might not have noticed, but I am getting sarcastic the more I read. I am not sure if it’s the way the book claims advantages without backing them up with proof (it could have done easily with the inline CSS knockout!) or the fact that I feel like I am directed in circles with the ‘duplications &amp; naming’ issue. All I know is I need a break to clear my mind.</p>
<p>Edit: it just feels to me (so far!) Tailwind has two major advantages: it’s can do things inline CSS can not and it’s short syntax pattern is solid. And those advantages are major already! The rest of the claimed advantages just cause doubt due to them being seemingly in conflict.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278765" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-278765" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278765"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
    <div class="postbit" id="279001" data-post-id="279001">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Faust" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Faust
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Just finished chapter 2.</p>
<p>I see that tailwind was probably thought to be used along with other tecnologies, like react, rails, phoenix… but if the idea is to create a component with TW classes, I could pretty much use plain css that any dev is more familair with.</p>
<p>as BartOtten mentioned modifiers are nice, since that’s not possible with inline css.</p>
<p>Now, something I’d complain about the book is that the examples aren’t that clear.<br>
For ex, in the <span class="mention">@apply</span> part the author says to add this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@layer components {
.title { @apply text-6xl font-bold }
.subtitle { @apply text-4xl font-semibold }
.subsubtitle { @apply text-lg font-medium italic }
}
</code></pre>
<p>but add where? anywhere? am I supposed to run something for it to work?<br>
I had to check the docs to discover..</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279001" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-279001" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279001"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="279355" data-post-id="279355">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Faust" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Faust
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi everyone, just finished chapter 3.<br>
This chapter is about typography so the author shows a lot of utility classes to format text (color, space, size …).<br>
Unfortunately there’s nothing I’d like to highlight…<br>
The next chapter seems more interesting, looking forward for it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279355" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-279355" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279355"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="279383" data-post-id="279383">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Faust" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Faust
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi again =)<br>
It’s saturday morning and I just finished reading chapter 4.</p>
<p>This chapter is about “the box”, so it’s showed a lot of classes to format margin, padding, borders and so on.</p>
<p>I’d say that after a while you get used to TW’s nomenclatures, and are able to guess the names that will be used to differents utilities.</p>
<p>Well, now I’m kind in the middle of the book, I think it could be nicier if it were a web book, with an online editor, something like w3school, where you could read it and manipulate the examples all in the same page. That would be cool.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279383" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-279383" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279383"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="279513" data-post-id="279513">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dmitriid" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dmitriid/120/13182_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dmitriid
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Speaking of the box, and to higghjack the thread a bit, Every Layout is also a must read and worth the money for the full version: <a href="https://every-layout.dev/rudiments/boxes/" class="inline-onebox" rel="noopener nofollow ugc">Boxes: Every Layout</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279513" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-279513" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279513"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="279518" data-post-id="279518">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="BartOtten" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/BartOtten/120/25440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  BartOtten
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This would have been my next book if it wasn’t for Aston highjacking my time for a LiveView bookclub. Thanks for the suggestion in this thread!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279518" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-279518" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279518"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="280105" data-post-id="280105">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="BartOtten" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/BartOtten/120/25440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  BartOtten
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Took a break from work, so let’s continue the tour where I left off <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>I notice I should not judge the book by it’s cover, and I don’t. But I do judge the book by Tailwind. This is not fair to the book and the author. So here comes the disclaimer:</p>
<blockquote>
<p><strong>The chapters are a great resource of information and explanation</strong>.<br>
It’s just Tailwind that kinda bugs me at the moment. So this is the last post before I do a “read everything, review once”. I guess this book isn’t a great fit for a chapter by chapter post.</p>
</blockquote>
<hr>
<p><strong><span class="mention">@apply</span></strong> (..continuation)<br>
Most of this section explains how layers work and why the layers are important so <code>@layers</code> might have been it’s own section. But that is nitpicking. The book has made clear to me how Tailwind uses the directives and that is what matters. As someone else already mentioned the book does not make clear where to put those which is a miss.</p>
<blockquote>
<p>But then the monkey comes out of the sleeve [1]. It is acknowledged that going all wild with <code>@apply</code> and <code>@layer</code> causes you to build your own little framework and taking upon yourself the naming and maintenance. If only I had read this acknowledgement before my mood became sarcastic the other day! I could’ve skipped some pessimism about the <code>@apply</code> directive. And then it directs me to use components instead of apply. Ow dear, it really is a threadmill!</p>
</blockquote>
<p>The book continues with the <code>modifiers</code>. They were briefly mentioned before and enabled “super power inline styling”. They sure look problem solving: happy to meet <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">.</p>
<p><strong>CSS Units:</strong><br>
Really enjoyed this section! Some historical explanation (about <em>CSS</em>), deeper details and a runner up for Chapter 3: Typography. I would want to write a whole chapter about this to show I can be a very happy person, but then I would spoil it all.</p>
<h1><a name="p-280105-typography-1" class="anchor" href="#p-280105-typography-1" aria-label="Heading link" rel="nofollow"></a>Typography</h1>
<p>While reading this chapter I begin to see value in a simple naming scheme, which is said to be offered by Tailwind. A few font schemes are explained and demonstrated. It’s not much over just inline styling but it looks a low cleaner in my code.</p>
<blockquote>
<p>But can anyone explain me why it is <code>font-bold</code> and <code>italic</code> instead of <code>font-italic</code>? I understand from a CSS mapping point of view but I rather would stay within the ‘namespace’ so the guessing would be easier.</p>
</blockquote>
<h1><a name="p-280105-boxing-2" class="anchor" href="#p-280105-boxing-2" aria-label="Heading link" rel="nofollow"></a>Boxing</h1>
<p>Once again the book does it’s job of explaining the available classes, options and modifiers. When needed the examples are demonstrated with graphics which is very nice.</p>
<p>But once again I get struck by Tailwind-ism:</p>
<blockquote>
<p>So padding is done with <code>p{side}-{size}</code> and border with <code>border-{side}-{size}</code>. Mind the dash. Why Tailwind? I really want to like you. And having <code>mt-auto</code> has no effect according to the book so why include it in the first place? Would have been nicer to just “do what I want” regardless of the underlying CSS. It’s almost as if they use a CSSproperties-to-Classnames generator sometimes.</p>
</blockquote>
<p>The author does mention it in the book which is a pre. This also happens with the <code>bottom-left-top</code> (mind the {horizontal}-{vertical} instead of the other way around). It is mentioned, but no explanation is given. Not that is matters for those wanting to use Tailwind..but for those pessimistic it would’ve been nice if the Tailwind author could explain his choice here in a sideblock.</p>
<p>I get the feeling the book author shares some criticism with me in this chapter. Although I am in the position to be more vocal about it.</p>
<hr>
<p><strong>Book conclusion so far</strong></p>
<ul>
<li>The book does a great job of explaining everything there is to know about Tailwind and basic (but more than most know) CSS.</li>
<li>This book targets the developers not knowing much about CSS at all. It therefor explains everything CSS can do, but by using Tailwind class names. Those look less intimidating but I doubt this is the way to go.</li>
<li>For those having CSS-skills already the amount of explanation of what-does-what is a bit much as most things in the book (so far) are 1-on-1 mapping with a short syntax class name <code>s-stx-cn</code>. For those people the currently <em>missing</em> explanations would be nice to have.</li>
</ul>
<p>[1] As you might have thought, there is no monkey coming out of your sleeve. This Dutch idiom is used when the truth is revealed about a situation or someone.</p>
<hr>
<p><a class="mention" href="/u/blakedietz" rel="nofollow">@blakedietz</a> <a class="mention" href="/u/lume" rel="nofollow">@Lume</a>  <a class="mention" href="/u/andyl" rel="nofollow">@AndyL</a> <a class="mention" href="/u/bdarla" rel="nofollow">@bdarla</a> <a class="mention" href="/u/bigtom" rel="nofollow">@BigTom</a> <a class="mention" href="/u/dch" rel="nofollow">@dch</a> <a class="mention" href="/u/stefanchrobot" rel="nofollow">@stefanchrobot</a> <a class="mention" href="/u/victorbjorklund" rel="nofollow">@victorbjorklund</a> <a class="mention" href="/u/w0rd-driven" rel="nofollow">@w0rd-driven</a></p>
<p>I wonder if you guys already started and maybe have a different experience / opinion than I have!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="280105" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-280105" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="280105"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="280272" data-post-id="280272">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="BradS2S" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/BradS2S/120/33246_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  BradS2S
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I went through and saw all the old archived book club threads. Definitely interested in jumping in! I have the book and will be contributing my thoughts periodically as someone very familiar with CSS and brand new to Tailwind.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="280272" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/modern-css-with-tailwind-book-club/53455/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-280272" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="280272"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/53455/load_more?page=3">Load more posts (5 remaining)</a>
</div></template></turbo-stream>