If you go the div route, I’d recommend passing them a className for your cards. Something so that you can style your css sheet with them.
Something like this:
html.Div([html.Div(i, id=i, n_clicks=0, className='myCustomCard') for i in cards], id='myCardHolder')
Then in your css file:
display: inline-block; /* if you want them to be together (could use flex as well) */
border-radius: 5px; /* rounded edges */
border: 2pt solid black;
box-shadow: 2px 2px 10px silver; /* gives a nice diffusion */
filter: brightness(1.05) /* gives it a hover effect if you have a background color you want to use */
/* active inversion */
Edited to make the css file classes instead of tags.
I used dbc.Cards so you could give the cards the ID instead of the buttons if needed. Or you could change the dbc.Cards to something different. Maybe that’s not what you were after, in the end I still do not fully understand your question