Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slick not working with CSS grids fr-units (fractions) #2959

Open
svirmasalo opened this issue Jun 28, 2017 · 24 comments
Open

Slick not working with CSS grids fr-units (fractions) #2959

svirmasalo opened this issue Jun 28, 2017 · 24 comments

Comments

@svirmasalo
Copy link

svirmasalo commented Jun 28, 2017

When using fr-units within css grid, Slick can't determine the width properly. Instead correct width, it makes it huge.

====================================================================

Here's the bug in action:
https://codepen.io/virmasalo/pen/XgVzrM

====================================================================

Steps to reproduce the problem

  1. Create slick using css grid and px -units
  2. Change px-units to fr-units

====================================================================

What is the expected behaviour?

Work like it does with px or other typical units.

====================================================================

What is observed behaviour?

Slick can't calculate the width properly, but instead gives a huge value for it.

====================================================================

More Details

  • Firefox latest
  • Latest jQuery & Slick
@alexd73
Copy link

alexd73 commented Jul 11, 2017

I have this problem too. Can you solve this?

@hackel
Copy link

hackel commented Aug 14, 2017

Confirmed this behaviour with grids. It doesn't seem to be limited to fractional units in particular. When using "auto" width, it sets the slick-track element's style to width: 2.32644e+8px; transform: translate3d(-7.15828e+7px, 0px, 0px); Looks like it's trying to do some kind of javascript magic that doesn't take grids into account.

Check out: https://jsfiddle.net/o8ggsrny/1/

Looks like it's caused by this line in setDimensions:
_.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));

Setting an explicit width for the column fixes the problem. I was able to work around this and still have a responsive design by setting my columns like so:
grid-template-columns: minmax(100px, min-content) calc(100vw - 463px);

@sephie
Copy link

sephie commented Nov 21, 2017

For what it's worth, in our Slick setup we've only had this issue on iOS Safari 10, not 11. We've managed to fix it by setting a width: 100vw value on the .slick-list element.

@Coop920
Copy link

Coop920 commented Jul 14, 2018

Anyone have an update on how to fix this issue? I'm trying to shove a slick slider inside a css grid that is split into 3 x 33% columns.

@amberweinberg
Copy link

amberweinberg commented Jul 26, 2018

This works fine for me in every browser but Firefox, where I'm having this issue. Slider width is calculated as a bajillion pixels (technical term) wide.

@apcro
Copy link

apcro commented Aug 15, 2018

I had this issue as well, to resolve it I had to apply a fixed width to the Slick container, rather than allowing the grid layout to automatically size it horizontally.

@samuel-clara
Copy link

Same issue here!

@mikkelwf
Copy link

Its failing for me in Chrome 69... Haven't checked other browsers yet...

@JJGerrish
Copy link

@Coop920 I had the same layout and adding overflow: hidden; to the grid item containing the slick slider fixed this for me as found here: #3415

Hopefully this helps some people with the same issue while we wait for a fix!

@mdominguez
Copy link

mdominguez commented Sep 22, 2018

Setting minmax(0, 1fr) or overflow: hidden; didn't fix it for me...
What did the trick was to trigger a window resize in the slider's init callback so slick recalculate's the correct width.

var $featuredNewsItemsList = $(this).find('.js-c-news-items__list');
$featuredNewsItemsList.on('init', function(event, slick, currentSlide, nextSlide) { 
     $(window).trigger('resize');
});
$featuredNewsItemsList.slick({
     //settings
});

@rdeeb
Copy link

rdeeb commented Jan 9, 2019

Bumping this issue is still a thing in 2019

@KimonoVIP
Copy link

Проблема может быть и когда родитель не имеет свойства flex, какой нибудь даже дальний родитель гораздо выше по вложенности. На самом деле display: flex не мешает слайдеру, мешает именно flex-grow: 1; или grid-template: 1fr 1fr; даже если эти свойства стоят гораздо выше по вложенности, например на body. Слайдер берет ширину не там где flexbox или grid layout ее динамически просчитывают. Проблему можно решить только если написать новый слайдер, так как автор данный слайдер уже не поддерживает, а жаль...

@sjcallender
Copy link

In case it helps someone, I put this codepen together as a proof of concept for a slider we need to implement. https://codepen.io/anon/pen/RdVJPx

Here's the design:
screen shot 2019-03-08 at 7 11 37 pm

@KimonoVIP
Copy link

KimonoVIP commented Mar 14, 2019

In case it helps someone, I put this codepen together as a proof of concept for a slider we need to implement. https://codepen.io/anon/pen/RdVJPx

Here's the design:

Oh my. Too many js for a simple grid and a simple slider. This is a terrible crutch, but a worker. Probably not dragging him into my project. It's easier for me to set the width in the grid in percent, then it works fine

@enguerranws
Copy link

See #3415, this issue is not related to Slick, it's the expected behavior of fr units.
Use minmax(0, 1fr); to allow your grid items to shrink.

@KimonoVIP
Copy link

See #3415, this issue is not related to Slick, it's the expected behavior of fr units.
Use minmax(0, 1fr); to allow your grid items to shrink.
Thanks^ it's work!) Need this write in documentation)

@KimonoVIP
Copy link

@enguerranws

See #3415, this issue is not related to Slick, it's the expected behavior of fr units.
Use minmax(0, 1fr); to allow your grid items to shrink.

This trick does not help for height if the slider is vertical. grid-template-rows: minmax (0, 1fr); also tried (

@enguerranws
Copy link

You mean, slick.js is in { vertical: true, verticalSwipe: true }? See: https://codepen.io/enguerranws/pen/dLNGQE

@BenSpace48
Copy link

There seems to have been a change in Chrome 80 so this now applies in more cases than it did previously.

@mrTyson
Copy link

mrTyson commented Feb 12, 2020

There seems to have been a change in Chrome 80 so this now applies in more cases than it did previously.

yes, after one of the latest updates even if one of parent containers has fixed width it not helps. Required to be not "fr" width of column

@gruffvaughan
Copy link

Use minmax(0, 1fr); to allow your grid items to shrink.

Worked great for me! 🎉

@amingarro
Copy link

See #3415, this issue is not related to Slick, it's the expected behavior of fr units.
Use minmax(0, 1fr); to allow your grid items to shrink.

Worked great for me.

@skrbnv
Copy link

skrbnv commented Nov 13, 2022

in case of auto this also works:
grid-template-columns: minmax(0, auto) 200px;

@youtube666
Copy link

best solved:
grid-template-columns: calc(100% - 200px) 200px;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests