Tailwind classes act differently on local host and on demo and main branch after build and deploy - css

I have a react project, and I'm creating a className for a div using classname package and tailwind classes. This div is actually the root element of a component that has some classes and accepts some from outside. The final class looks like below:
class="flex-1 bg-white border p-8 mb-6 rounded-md tracking-wide mt-1 !mb-0 md:mb-6 !bg-transparent md:bg-white border-0 md:border-1 !p-0 md:!p-6 tracking-wide relative"
It works fine when I test it on my local branch and the bottom margin is zero. But when I push it to my main branch and it builds what I see on the browser is different. The '!mb-0' got overridden and the mb-6 still shows. This problem is repeated everywhere.
Is there a way to avoid this so what we see on the local host acts exactly like the one on the main branch and demo after deploy?
This is how the margin classes look like after deploy

Related

Listbox options (similar to dropdown) overlapping

I am trying to develop a webpage by React.js, Next.js, TailwindCSS, and HeadlessUI. It accepts a couple of inputs (I used Listbox of HeadlessUI for this purpose), and they must be placed consecutively to let users specify the required information for the platform.
After testing the developed user interface, I witnessed an overlapping in Listbox options. As shown in the screenshot below, they need to be rendered properly, showing up on each other, which is not intended. I need to resolve this issue
In TailwindCSS's documentation, there should be a specific solution to this error within their defined classNames, but I have not found it yet. The solution can be relevant to bringing an object to the front
There are two probable destinations where I need to make a modification
ClassName of the ListboxOption ( mother component ):
className="absolute mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm">
ClassName of Listbox Options ( Child component ):
className = {
({
active
}) =>
`relative cursor-default select-none py-2 pl-10 pr-4 ${active ? 'bg-amber-100 text-amber-900' : 'text-gray-900'}`
}

Responsive tailwind css (padding and flex-direction) not applied to large screens

Im trying to get some advice on Tailwind with div positioning using custom media breaks. Currently at screens over 350px(xs) the homepage layout is flex with flex-col direction. Yet when I set it to flex-row (flex) for large screens over 1100px(lg), it remains as flex-col and one of the flex children is hiding the other.
When I test to see if my custom screens work by changing font-color at each break (xs-lg), it works. Meaning my screens are set up fine. It just seems like its not registering changes in positioning particularly with flex but also with padding interestingly.
Sorry if this is obvious but I have read the tailwind docs and since they work with color changes It means the breaks are set up right. So I'm probably just missing something obvious.
```javascript
export default function HomeHero(){
return(
<div className={styles.HeroContainer}>
<div className={styles.HeroText}>
<div className={styles.title}>Stay connected off-grid</div>
<div className={styles.text}>paragraph text</div>
<form className={styles.form} action="/send-data-here" method="post">
<input type="text" className={styles.input} name="first" placeholder="Email Address"/>
<input type="text" className={styles.input} name="last" placeholder="Password"/>
<div className={styles.Button}><button type="submit">Log In</button></div>
<div className={styles.forgot}><Link href="/forgotpassword">Forgot your password?</Link></div>
</form>
</div>
<div className={styles.HeroImage}></div>
</div>
)
}
const styles = {
HeroContainer: 'flex xs:flex-col lg:flex-col lg:min-h-screen',
HeroText: 'flex flex-col border-2 text-left xs:p-10 md:p-24 w-1/3 lg:mt-12 lg:pr-36 lg:pl-36',
HeroImage: 'flex w-2/3 bg-hero bg-center bg-contain bg-no-repeat bg-top-32 self-stretch min-h-[500px]'
}
At first I was stumped until I realized that the flex-col on HeroText wasn't doing anything without it being a flex container. Now that I'm looking at it and your example, I think that is the problem.
Your flex direction classes are on the container which is just setting the flex direction on the HeroText div. You need to move those flex direction utilities to HeroText. Here's a Tailwind Play example: https://play.tailwindcss.com/MmfOrXgVa0 (OLD LINK)
You probably also want to rethink the styles on HeroImage. Seems like you'd want to absolutely position that.
UPDATE BASED ON COMMENTS:
Your comment changes things. The flex-direction was being updated with your with the code you had. You still had some extra classes, but that didn't stop it from working. I believe, the real issue was around using lg:bg-hero. Unless you added that as something in your config, that class wouldn't do anything, and it wouldn't be connected to the lg breakpoint.
Also, you are defining flex-1 and widths on the two elements, and these are conflicting with each other with the flex-1 winning. Because of this, when it was full screen, the background was only 50% wide, and since your content wasn't wide enough to wrap, you weren't seeing it.
If you fix those things, you should be good to go. Here is a working example in Tailwind Play: https://play.tailwindcss.com/kF7mi27UUC
Also, here would be some updated classes for your JS. I added a few classes to the HeroImage class so that it would show up:
const styles = {
HeroContainer: 'flex flex-col lg:flex-row lg:min-h-screen',
HeroText: 'flex flex-col text-left xs:p-10 md:p-24 lg:w-1/3 lg:mt-12 lg:pr-24 lg:pl-24',
HeroImage: 'lg:w-2/3 bg-center border-2 bg-cover bg-top-32 self-stretch bg-black min-h-[200px]',
}

Hot to use arbitrary color values for each side of the border property in tailwind-css?

I'm trying to create a triangle using tailwind, here's the original code for Triangle Generator.
to set colors for each side of the border I'm using border-b-color syntax which works fine but as long as I use the colors that are already defined in the theme, when I try using the border-b-[#fff] syntax to enter arbitrary values, it won't work.
here's the full code:
<!-- this does not work -->
<div class="absolute z-1 -right-[1px] -bottom-[1px] w-0 h-0 border-solid border-t-0 border-r-0 border-b-[4em] border-l-[4em] border-t-transparent border-r-transparent border-l-transparent border-b-[#1D1F2D]"></div>
<!-- this works fine -->
<div class="absolute z-1 -right-[1px] -bottom-[1px] w-0 h-0 border-solid border-t-0 border-r-0 border-b-[4em] border-l-[4em] border-t-transparent border-r-transparent border-l-transparent border-b-primaryColor"></div>
any idea how to get around this using tailwind?
You might need to do as following: border-b border-[#color]
I mean, in my case border-b-[#000] will not work as well. So, I usually specify border color separately like above.
UPDATE:
You can refer to this link

Is there a way to chain multiple tailwind css classes on a single hover instance?

I was wondering if there is a way to chain multiple tailwind css classes on a single hover instance on an html element instead of using multiple hover instances.
For instance instead of this
<button class="hover:bg-blue-900 hover:text-white"></button>
whether you can have this or something else
<button class="hover:bg-blue-900:text-white"></button>
No there isn't. As from the docs(https://tailwindcss.com/docs/hover-focus-and-other-states), you can see they themselves add multiple classes for focus/hover.
However you can create reusable styles to counter this
Sadly it seems not. Maybe something that should be suggested to the team
I was trying to do something similar, i wanted the text to change color when hover the div.
searching in the docs i found the 'group' that helped me:
https://tailwindcss.com/docs/hover-focus-and-other-states#styling-based-on-parent-state
i tried different types of hover like:
hover:bg-green-600 text-gray-50
hover:[bg-green-600 text-gray-50]
hover:(bg-green-600 | text-gray-50)
Maybe you can try wrapping the button in a div and add the group class
my code before, did not work like this
<Link to='/home'>
<div className="p-2.5 mt-3 flex items-center rounded-md px-4 duration-300 cursor-pointer hover:(bg-green-600 text-gray-50)">
<span className="text-[15px] ml-4 text-gray-500 font-bold">Home</span>
</div>
</Link>
after using gruop
<Link to='/home' className='group'>
<div className="p-2.5 mt-3 flex items-center rounded-md px-4 duration-300 cursor-pointer group-hover:bg-green-600" >
<span className="text-[15px] ml-4 text-gray-500 group-hover:text-gray-50 font-bold">Home</span>
</div>
</Link>
with group when i hover the div it also change the span text color, like this the cursor don't need to be right on top of the word to make hover work.
but I still wish there was a way to put more than one class on the same hover, I hope they add it in the future...
hope it may help
I stumbled upon the same issue and was going to write a Tailwind plugin for that but it turns out that it's hard to mess with the rules they have set, you can only extend it by adding new variants and utilities but cannot do something like hover:(text-white bg-red-500).
However, I did find out about twin.marco that has this variant groups feature so check do check that out.

Why is only a part of the TailwindCSS classes rendering in my React app?

I have the following code in my React app which I copied from the TailwindCSS documentation
<div className="row border-solid border-4 border-light-blue-500">
However, when my React app is rendering, only the 'border-width: 4px!important;' portion gets rendered and the border-solid and border-light-blue-500 portions don't get rendered. Why is this?

Resources