#kevinpowell
Explore tagged Tumblr posts
wcatradio · 1 year ago
Link
In this webinar of the Institute for Theological Encounter with Science and Technology, Sr. Marysia Weber, RSM, and Dr. Kevin Powell, discuss the effects of social media on children. (April 13, 2024) Is the increasing number of hours that children are spending using smartphones having any effects on their brains and psychosocial well-being? Research is telling us that the answer to this question is a resounding yes! This presentation will address how excessive use of digital devices is impacting psychosocial maturation and is altering brain development in ways similar to the alterations noted in substance use disorders. Practical means of addressing these detrimental effects will also be highlighted. Technology changes communication and social lifestyles. This has been true since the invention of the printing press and the telephone. Technological progress will have both positive and negative effects on society. It is not enough to measure harms and act like outraged Luddites. Ethical societies measure and balance the positive impacts. It is not enough to weigh pros and cons. Communities should regulate technology so that positives are appropriately rewarded, negatives are mitigated, and just remediation is provided for economic externalities that generate profit for some while harming other people, society, and the environment. Laws are not enough. Moral formation needs to be updated and augmented to enable beneficial development and adoption of technology. Children, who have never known anything different, are the most strongly impacted by the harms, the least able to resist trends, and the most in need of the moral formation. How Does Social Media Affect Children? - Institute for Theological Encounter with Science and Technology (faithscience.org)
0 notes
highly-nonexistent · 7 months ago
Text
And just because I don't want these to get lost at the bottom of my ramble, here are some resources for you to learn how to make your own website !!
- This one is pretty new but it is very beginner friendly and is a nice easing into web development. Try checking it out first!! : https://htmlforpeople.com/
Googling things is one of the most important parts when working with code, and MDN is the biggest database of everything web related. Very technical in a lot of things, but has a lot of guides for important parts of making websites, even a beginner's guide!!: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web
This is featured in htmlforpeople but I will add it nonetheless, Neocities is an amazing free hosting service that gives you 1GB of storage for all your needs, no ads too !!: https://neocities.org/
If you are really REALLY interested in web development, The Odin Project is yet another free resource, community-made, that has the goal of teaching you how to be a full stack web developer. All the bells n' whistles. BUT it is also, I find, a greatly structured resource if you're confused where to go with learning things. It also has little projects in-between lessons like htmlforpeople, so you will be actively exercising your knowledge!! (There is a section about needing a virtual machine and Linux. While I recommend learning this if you feel like it, you can follow the directions of the course either way for guidance, but the parts of using the Linux terminal and similar things will not apply): https://www.theodinproject.com
A quick note for the odin project is that the backend part is LARGELY IRRELEVANT if you just want a website to look pretty and to host your stuff, since the backend is used for servers and storing data and whatnot. Neocities for example has zero backend support, and all of it is done in the frontend, aka "what you can actually see and interact with on the page".
If you are interested in anything CSS, a really good resource is Kevin Powell on Youtube!! Really interesting showcases of CSS and the likes https://www.youtube.com/@KevinPowell
Featured in the Odin Project, there's also https://javascript.info/ for another interesting resource on javascript code. Use it in tandem with MDN !!
These are for now the things I have to showcase, but I think with these alone it's definitely more than enough. Hopefully you'll use these resources if you're interested !!
There is something very weird about the relatively short nature of the culture surrounding website creation. As in, like, internet-user-created websites have been around for like 30-31 years at this point, and the culture surrounding them has changed so very much.
People used to create websites left and right for their own needs, their little shops and their little blogs about what they liked. Some websites of course housing horrible content since their dawn, and some being as mundane but as unique as the person behind its code. I have seen older sites, archived, that promoted creating your own site, and that was interesting to see. That culture of creating your own website and of sharing that knowledge on a still-growing facet of communication.
And then at some point social media appeared, and that was interesting, because now everyone was able to quickly present themselves without the need of a website, but that didn't mean people stopped making websites. I mean, hell, Geocities died in 2009, so a lot of people were creating their own websites for free before that time, no need to pay for domain names or hosting. And even without Geocities, there were other website hosting things that yes, while not as customizable, were still a resource for people to work with them. There's still a website floating around that I made when I was a kid using one of these services. Cool stuff.
All this to say that I do feel a weird sense of dread looking back and cross-referencing with the present and seeing things like "website creator powered by AI" and shit like that, because just ?? How did it go plummeting so quickly. There is a weird feeling of having lost a developing culture to corporations making quick access to posting things that, as corporations' nature dictates, are used to sell data or to train models or what have you. Similarly, we get pretty same-y looking pages because of the need to be slick or whatever with designs that just leaves everything looking the same. ALSO, the loss of spaces for kids, or just the gradual lowering of them in favor of cocomelons and whatever else the devil's machine has spawned is like watching an apple decay before having ripened. I do feel like there is this phenomenon in which how to make a site has been lost in the notion of "making a website falls into the realm of evil and scary coding and I could never be a programmer, plus who would look at it, plus we have tools to make them," etc etc etc. Here is a little secret: website creation is not exactly hard to pick up at all. You might say it's very similar to using a rich text editor like Word or a notes app or whatever you use. Similarly, have you used markdown for things like messages or D iscord messages, you know, with the asterisks for bold text and the likes? Markdown is based on html's structures. And truly, you do not have to even learn to code using Javascript if you don't want to, you can just go full html + css and structure your things as you go, adding your little images and your updates. Because guess what !! Html and css are not programming languages, they're a markup language and a stylesheet language respectively, which is a fancy way to say "you make the structure of your page with the first one and make it pretty with the second one". This includes cool stuff like tables, lists, grids, colors, transitions, etc. All of that without any programming. (That being said, if you are interested in programming, Javascript isn't too bad to pick up. The language itself *is* kind of evil, but using it in conjunction with html is not too difficult). I do have to say though, I am glad that there is a push to making your own websites and things, especially with Neocities sprawling a huge community of avid website creators, as well as the huge amount of tutorials and stuff making the push forward with making sites and online spaces and experiences more widely available. Hopefully this becomes a trend that keeps going up, considering the state of seemingly every single social media that has existed since the 2000s- 2010s.
7 notes · View notes
eleonthescene · 5 years ago
Text
SUMMERSTAGE ANYWHERE CULTURE TALK WITH KOOL HERC / CINDY CAMPBELL / KEVIN POWELL
Tumblr media
SUMMERSTAGE ANYWHERE CULTURE TALK WITH KOOL HERC / CINDY CAMPBELL / KEVIN POWELL
Jul 24, 2020
Tumblr media
SUMMERSTAGE ANYWHERE CULTURE TALK WITH KOOL HERC Friday, July 24, 2020 8:00 pm - 9:00 pm Instagram Live https://instagram.com/summerstage Lineup and format may be subject to change. The annals of hip-hop history have long since enshrined Kool Herc as one of hip-hop’s forefathers; the party he DJ’d in the rec room at 1520 Sedgwick Avenue is considered the birthplace of hip-hop. Lesser known is the fact that the party was put together as a birthday celebration by his sister Cindy Campbell, the self-proclaimed “First Lady of Hip-Hop” who was inadvertently the first-ever hip-hop promoter. Kevin Powell is a poet, journalist, civil and human rights activist, hip-hop historian, and author of an upcoming biography of Tupac Shakur. (adsbygoogle = window.adsbygoogle || ).push({}); Search for: Archives Archives Select Month July 2020 June 2020 May 2020 April 2020 February 2020 January 2020 December 2019 November 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 August 2015 /* */ Baseball Hall of Fame 2019 OTS Sports Silvana Magda with The Katenda Band & Viva Brazil Dancers ELE on Telexito Vargas Cosmetics (Short)https://www.youtube.com/watch?v=K68zhw-fxuM&t=116s CategoriesBlog Brazil Events Fashion Featured Flashbacks Jazzmobile On The Scene News On the Scene Sports Press Alert Television Uncategorized
Tumblr media
SIE7E lanza Gaia, un disco para reconectarnos con nosotros mismos y el planeta
by admin | Jun 30, 2020 | Featured, On The Scene News | 0 CommentsNews/Noticias     “Es un disco que te invita a la intimidad, a mirar hacia adentro con elementos viajeros que sirven hasta para meditar. Si lo escuchas con audifonos tambien es otra experiencia, recomiendo que lo escuches todo de corrido con los ojos...
Tumblr media
El Festival CortoCircuito en línea: la ventana a otras culturas a través del cine
by admin | Jun 6, 2020 | Featured, On The Scene News | 0 CommentsNews / Noticias     NUEVA YORK  - No cabe duda que cualquier expresión artística es un puente para escuchar las historias desde otro punto de vista, para aprender de otras culturas, para enriquecer el alma y para despertar los sentidos de diferentes...
Tumblr media
New, Milly Quezada presenta álbum “Duets Greatest Hits”
by admin | May 7, 2020 | Featured, On The Scene News, Uncategorized | 0 CommentsMilly Quezada presenta álbum "Duets Greatest Hits"     Escuche la producción aquí Miami, FL, 1 de mayo de 2020.- (@MinayaPR) Milly Quezada, presenta un álbum especial "Duets Greatest Hits" donde se reúne 12 grandes duetos que la Reina del Merengue ha... « Older Entries ELE OnTheScene MEET ELE OnTheScene About Us Staff Press Alerts EPK Media Kit NEED HELP? Privacy Policy Cookies Policy Sitemap Contact Us FOLLOW US FollowFollowFollowFollowFollowFollowFollowFollowFollow Subscription Newsletter Read the full article
0 notes
trascapades · 6 years ago
Photo
Tumblr media
🧤🧣🧥🧦🎄❤🎶☃️ #ArtIsAWeapon #PartyWithAPurpose #TisTheSeason for giving. Join @kevinpowellinbrooklyn tonight for his 19th Annual Holiday Party/Clothing Drive to benefit homeless young people through the @safehorizon Streetwork Project. Music by @nycdopeparty's @djcosito & @djmarcsmooth. 7:00PM-10:00PM, @nycveganfoodcourt, 12 St. Marks Place, #NYC. _________________________ Reposted from @kevinpowellinbrooklyn - MY FELLOW NEW YORKERS. We see it everywhere. Homelessness is completely out of control, and WINTER is here again. I am hosting my 19th annual holiday party & clothing drive FRI DEC 13, 7pm-10, NYC VEGAN COURT, 12 St. Marks Place. PLEASE join us for the GREAT music and food and drink, and PLEASE KNOW THAT ADMISSION IS FREE IF YOU DROP off a CLEAN new or used WINTER COAT, AND OTHER WINTER GEAR (gloves, hats scarves, PLEASE see attached flyer for all that is needed, PLEASE), whatever you can spare. NO RSVP NEEDED, just please come and know your contribution helps others BIG TIME. Yes, you will be helping someone stay warm, and helping our great charity, Safe Horizon Streetwork Project, through another tough season where they need as many coats and other Winter gear as they can get. THANK YOU THANK YOU THANK YOU. Your support means more than you can even imagine. Peace & Blessings, Kevin Powell Civil & Human Rights #Activist; #PublicSpeaker; #Author of 14 books; #Poet; #Journalist; #Filmmaker; Pop Culture #Curator; Biographer of Tupac Shakur #ClothingDrive #CoatDrive #KevinPowell #HolidayGiving #TraScapades #ArtIsAWeapon https://www.instagram.com/p/B6B5TU0g_3C/?igshid=113jm55y6lm1n
0 notes
stacksmag · 8 years ago
Photo
Tumblr media
Hip-hop journalist/author #KevinPowell is suing the makers of #AllEyezOnMe for copyright infringement. “After a great deal of thought and consultation with many, including my attorneys, I have filed a federal lawsuit against the producers and writers of ALL EYEZ ON ME, the new Tupac Shakur biopic, for copyright infringement,” Powell posted on Facebook. “After viewing the movie twice in the past few days, it is clear that my exclusive Vibe cover stories on Tupac Shakur (when he was alive), were lifted, without proper credit or compensation of any kind to me, and used in ALL EYEZ ON ME. As the owner of the copyright to these articles, ALL EYEZ ON ME infringed on my rights by using content and narrative that was exclusive to my writings,” he continued. “I am seeking justice and a resolution in this matter that is fully fair to me and all the work I’ve done throughout the years, as an author and protector of the Tupac Shakur narrative.” #tupac #tupacshakur #lawsuits #films #hiphop #stacksmag #stacksmagazine
1 note · View note
kbainc · 7 years ago
Photo
Tumblr media
Shoutout to #VibeMagazine Honoring our Queen shot by the legendary #photographer #AnthonyBarboza @anthony_barboza_photographer #kbainc kenbarboza #kbaphotography #legend #VIBE great piece written by #KevinPowell #bigup EIC #DatwonThomas #ArethaFranklin #TheQueenOfSoul #DetroitsOwn (at New York, New York) https://www.instagram.com/p/BnPjzjAn-yg/?utm_source=ig_tumblr_share&igshid=wfz17b3nf5fq
0 notes
bloomsburgu · 7 years ago
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Sankofa Conference delivers lasting message, impact
Defining the moment to leading by example to dealing with annoying leaders, Bloomsburg University’s 23rd annual Sankofa Conference delivered a lasting message with a lasting impact for roughly 200 participants representing 10 universities and colleges.
Sankofa, from the Twi language of Ghana, translates to “go back and get it.” There is no better name for this conference, which is all about reclaiming the past for a better future through hands-on workshops and motivational speakers. 
“It really is beautiful to see so many students of color coming together to learn and to deepen their understanding of not only each other, but themselves,” says Leigha Coates, a senior business administration management major, who attended her first Sankofa Conference in 2013. "It was what I learned at the conference about myself and [my] culture that made me want to continue to attend every year after that”. She also shares that every year she attends helps her to appreciate her culture and see the important contributions that people of color offer the world.
For students who are in a rut, or are struggling to find motivation, this conference can be the solution to making your dreams come true. 
“Take it from a student that was so close to quitting, but can now see graduation coming up,” Coates says. “Sankofa was key to my growth as an African-American woman.” 
Coates said the conference allows students to grow as individuals and hear educated people from all different backgrounds share their successes.
“The key to overcoming (struggle) is to believe in yourself,” Coates says. “Be proud of being black; be proud of being a woman. Be proud, and work your butt off until you accomplish every goal that you have.”
This year’s keynote speaker was author Kevin Powell, who Coates had the honor of introducing him. Considered one of the most acclaimed political, cultural and literary voices in America today, he has written 13 books, including his latest, “The Education of Kevin Powell: A Boy’s Journey into Manhood.” Later this year plans to publish a biography of Tupac Shakur. Powell’s writings have also appeared in Esquire, Ebony, The Washington Post, Rolling Stone, and on ESPN.com and CNN.com, as well as Vibe Magazine, where Powell worked for many years as a senior writer. As a pop culture curator, Powell produced the first exhibit on the history of hip-hop in America at the Rock and Roll Hall of Fame in Cleveland, Ohio. 
Presented by the Office of Multicultural Affairs, the daylong conference continued with a series of workshops and presentations, some of which led by BU faculty and returning alumni.
Working on Purpose while living in Reality ... Learning to connect your ideal self, by Querida Lugo
Authentically Me, by Fred Hodges
Mediocracy, Average and Excellence, by Lisa Bryant
Continuing the Conversation, by Kevin Powell
True Colors, by Marion C. McKinney and Marcus T. Harrison
D.A.M.N. Defining A Movement Now, by Marceline Salomon-Debrosse
The elephant in the room, by Marvin Carter
Lead by Example, Not by Design ... Title and Toys are Temporary, by Scott Richardson
Ugh!? Not Another Diversity Workshop? “When multicultural competence meets a real reality,” by Justin L. Brown
It’s level up SZN: How to prepare for success during and after college, by Marquise Isaac Rivers
Dealing with Annoying Leaders, by Ashley Spencer
Permission Granted!, by Tammy Hilliard-Thompson
  — Danielle Backowski, mass communications major
0 notes
wcatradio · 2 years ago
Link
FR. KEVIN FITZGERALD, SJ, PHD, PHD ​Healing Post-Covid Healthcare by Greater Integration of the Humanities and Ethics into Healthcare Education Kevin T. FitzGerald, S.J., Ph.D., Ph.D., is the John A. Creighton University Professor and chair of the Department of Medical Humanities in the School of Medicine, at Creighton University. He received a Ph.D. in molecular genetics, and a Ph.D. in bioethics, from Georgetown University. His research efforts focus on the utilization of the Humanities in medical education, on the investigation of abnormal gene expression in cancer, and on ethical issues in biomedical research and medical genomics. He has published educational, scientific, and ethical articles in peer-reviewed journals, books, and in the popular press.Fr. FitzGerald has given presentations nationally and internationally, and has often been interviewed by the news media, on such topics as human genetic engineering, cloning, stem cell research, and personalized medicine. He is a founding member of Do No Harm, and a member of the Genetic Alliance IRB. In addition, he has been a Corresponding Member of the Pontifical Academy for Life since 2005. ABSTRACT The Covid pandemic greatly exacerbated deep flaws in our healthcare institutions and educational programs. To help heal these deep flaws, Creighton University is intentionally and intensively integrating the humanities and ethics into all its health professions programs, both undergraduate and graduate. Though early in this process, evidence is already manifesting the value this integration is having with our students and faculty, and, hence, with those they care for and work with. A brief introduction and summary of this effort will be presented in hopes of generating further discussion of how all of us can create a healthcare education program adequate to meet the enormous financial, social, moral and spiritual challenges healthcare faces today. KEVIN POWELL, MD, PHD The Application of Faith and Reason to Clarify Truth in Medical Care Kevin Powell, M.D. Ph.D. FAAP, is a retired pediatrician who specialized in the care of hospitalized children. Prior to medical school he worked as a chemical engineer in industry and academia, earning a Ph.D. in Medical Engineering from a joint program of Harvard Medical School and the Massachusetts Institute of Technology. Alongside clinical care, for 18 years he served on or chaired hospital ethics committees and was a clinical ethics consultant. His last academic position was on faculty at Saint Louis University and Cardinal Glennon Children’s Hospital. He is Lutheran. ABSTRACT Medical knowledge is constantly evolving and occasionally advancing. Most of what I was taught in medical school became obsolete, contradicted, or was shown to have always been flat out wrong by the time I retired. The practice of clinical medicine requires continuous adoption, improvement, refinement, and frequently rejection of new knowledge. That knowledge needs to be adapted to function within evolving moral norms and cultural values. The search for truth is ever-present. The encyclical Fides et Ratio says “Faith and reason are like two wings on which the human spirit rises to the contemplation of truth.” REV. FR. NICANOR PIER GIORGIO AUSTRIACO, O.P. An Ethical Assessment of Puberty Blocking Hormonal Treatments for Gender Dysphoria in Children ​Fr. Nicanor Austriaco, OP is a Professor of Biological Sciences and a Professor of Sacred Theology at the University of Santo Tomas in the Philippines. He completed his Bachelor of Science in Bioengineering at the University of Pennsylvania, summa cum laude, and then earned his Ph.D. in Biology from M.I.T. where he was a fellow of the Howard Hughes Medical Institute (HHMI). He earned a Doctorate in Sacred Theology (S.Th.D.) at the University of Fribourg in Switzerland, in 2015. His first book, Biomedicine and Beatitude: An Introduction to Catholic Bioethics, was published by the Catholic University of America Press in 2011. It was recognized as a 2012 Choice outstanding academic title by the Association of College and Research Libraries. ABSTRACT Should puberty blockers be used to treat gender dysphoria (GD) in children? For activists promoting transgender rights, the answer to this question is a clear yes. However, several recent reviews of the medical literature have concluded that there is insufficient evidence to assess the long-term effects of hormone treatment on prepubescent children who experience GD. Therefore, in the absence of a robust risk-benefits analysis, it is unethical to promote this controversial medical intervention. It is not surprising that in Norway, Sweden, and Finland, public health officials are warning that for teens with adolescent-onset dysphoria, the use of these puberty blocking drugs may do more harm than good.
0 notes
ice-cream-convos · 8 years ago
Photo
Tumblr media
Kevin Powell Files Copyright Infringement Suit Against Lionsgate, Wants 'All Eyez On Me' Pulled From Theaters ⚖️🎬😩🍦 ___ Get the scoop @ IceCreamConvos.com or the ICC app! Link in bio. ___ #KevinPowell #AllEyezOnMe #Lionsgate #CopyrightInfringement #Lawsuits #IceCreamConvos
0 notes
feelingandform · 8 years ago
Video
vimeo
The Real World (Season 1)
0 notes
script-ease · 2 years ago
Text
0 notes
pianotex · 6 years ago
Photo
Tumblr media
web管理人(教育楽器販売㈱)♪worldwide #PianoLove #Music令和α @Piano_kyoikugkG
@Piano_kyoikugkGさん, @nordkeyboardsさん 他2人
@nordkeyboards #nordgospelsessions: @K_Powell1 #kevinpowell &@G_Gibsonjr #glenngibsonjr -Tried It 
#キークリン #フトーゴム #ギターペット  #ピアノベースSPD #地震 #ピアノ防音 
#Funk #Jazz #Pianist #USPOP 教育楽器 http://kyoiku-gakki.co.jp 
(Link) https://youtu.be/oLmm6xGtrHw
https://twitter.com/Piano_kyoikugkG/status/1196399845143003136
0 notes
eleonthescene · 5 years ago
Text
SummerStage Anywhere Digital Series Shows Week of July 20 – July 26
Tumblr media
SummerStage Anywhere Digital Series Shows Week of July 20 – July 26
Jul 20, 2020  
Tumblr media
SummerStage Anywhere Digital Series Shows Week of July 20 – July 26   THIS WEEK’S PERFORMERS: La India, DJ Michael Brun, Eduardo Vilaro, Miguel Atwood-Ferguson, Afrolatino Festival NY, LaFrae Sci, Kool Herc & Cindy Campbell, La Bruja, DJ Moullinex, Kevin Powell and Karine Plantadit      JULY 20, 2020 – NEW YORK, NY – Capital One City Parks Foundation SummerStage is continuing its free digital series SummerStage Anywhere this week with one-of-a-kind digital arts performances - live and pre-recorded -  specific to genres that were born in or deeply represent New York (Hip-Hop, Latin, Global, Indie Rock, Jazz & Contemporary Dance). Shows will be presented on SummerStage Instagram, SummerStage YouTube, Facebook page and Twitch channels unless otherwise noted.   SummerStage Anywhere digital schedule for week of July 20-26 (For the most up-to-date scheduling and lineup information, please visit SummerStageAnywhere.org):   Monday, July 20th: Monday Meditations (SummerStage Instagram channel) live at 12:00PM EST. 30-minute weekly health and wellness workshop with guest host Karine Plantadit, former Alvin Ailey and Broadway Tony Award nominated dancer (Come Fly Away, The Lion King), instructor, choreographer, certified yoga teacher and life coach.   Monday, July 20th: Soundcheck: Curator Conversation (SummerStage Instagram channel) live at 7:00 PM EST with SummerStage’s Dance Curator Danni Gee and Eduardo Vilaro, Artistic Director and CEO of Ballet Hispánico, to discuss the legacy of the company in it’s 50th season, artistic vision and Latinx representation in dance.   Tuesday, July 21st: Weekly Beat: DJ sessions (SummerStage YouTube and Twitch) live at 6:00PM EST with Haitian DJ Michael Brun and Portuguese producer, DJ and multi-instrumentalist Moullinex from the rooftops of Lisbon (Moullinex) and Brooklyn (Brun).   Wednesday, July 22nd: SummerStage Studio: Digital, presented by Disney (SummerStage Instagram, SummerStage YouTube, Facebook page and Twitch) live at 2:00 PM EST a family friendly, percussion master class for all ages with award-winning and internationally acclaimed multi-instrumentalist LaFrae Sci.   Thursday, July 23rd: Culture Talk (SummerStage Instagram, SummerStage YouTube, Facebook page and Twitch) at 8:00 PM EST with Salsa star La India & multifaceted performer La Bruja in conversation on the way that their home of the Bronx has always supported and developed culture and music, their mutual experiences performing at SummerStage, how La India has stayed focused and maintained her career over the years, how she has been staying connected to her fans through recent months and more.   Friday, July 24th: Culture Talk (SummerStage Instagram, Facebook page and Twitch) live at 6:00 PM EST with brother-sister combo DJ Kool Herc & Cindy Campbell (The Legendary Founder and The 1st Lady and Mother of Hip-Hop) in conversation with poet and writer Kevin Powell live from Cedar Park in the Bronx.   Saturday, July 25th: SummerStage Anywhere Sessions (SummerStage Instagram, SummerStage YouTube, Facebook page and Twitch) at 8:00 PM EST with jazz multi-instrumentalist,‌ ‌composer,‌ ‌arranger,‌ ‌music‌ ‌director,‌ ‌dj,‌ ‌producer‌ ‌and‌ educator Miguel Atwood-Ferguson featuring a live Q&A before the debut of exclusive footage from his August 23, 2012 performance at the Charlie Parker Jazz Festival.   Sunday, July 26th: #PeopleSpeakSundays curator takeover (SummerStage Instagram channel) live at 2:00 PM ET with special guest curator Afro-Latino Festival, a New York based festival that will be celebrating Afro-Latin American, Afro-Caribbean and Diaspora Women’s Day. This special collaboration will be live from Barbès in Brooklyn, with Big Room partner venue DROM (fully equipped with Big Room's automated live streaming production system).   Missed a recent performance or conversation? You can keep up to date with all SummerStage Anywhere programming on the SummerStage YouTube channel.   Still to come this season: performances and conversations with Brazilian drag queen and pop star Pabllo Vittar, Afro-French Cuban musical duo Ibeyi, co-founder and co-artistic director of Complexions Contemporary Ballet Desmond Richardson, Brazilian rapper and MC Emicida, frontwoman and bass player of Brooklyn-based band Sunflower Bean Julia Cumming, Bronx-born Puerto Rican American b-boy Crazy Legs, Dance Magazine’s “25 to Watch” Camille A. Brown Dancer Juel D. Lane, indie folk singer/songwriter Fenne Lily, New York-native and Alvin Ailey American Dance Theater member Khalia Campbell and much more.   A full schedule of upcoming programming is below. For the most up-to-date scheduling and lineup information about SummerStage Anywhere, please visit SummerStageAnywhere.org.   ###   Day Date Time Featured Artist/Speaker Program Type Platform Genre Mon 7/20/20 12:00PM ET Karine Plantadit Monday Meditations Instagram Live Dance Mon 7/20/20 7:00PM ET Eduardo Vilaro Soundcheck: Curator Conversations Instagram Live Dance Tues 7/21/20 7:00PM ET DJ Michael Brun and Moullinex Weekly Beat – Live DJ Set Twitch and YouTube Global Wed 7/22/20 2:00PM ET LaFrae Sci SummerStage Studio: Digital YouTube Indie / Family Thurs 7/23/20 8:00PM ET La India + La Bruja Culture Talks All Social Channels Latin Fri 7/24/20 6:00PM ET Kool Herc & Cindy Campbell + Kevin Powell Culture Talks All Social Channels Hip-Hop Sat 7/25/20 8:00PM ET Miguel Atwood Ferguson Charlie Parker with Strings SummerStage Anywhere Sessions All Social Channels Jazz Sun 7/26/20 2:00PM ET Afrolatino Festival NY #PeopleSpeak Sundays IGTV N/A Mon 7/27/20 12:00PM ET Karine Plantadit Monday Meditations Instagram Live Dance Mon 7/27/20 2:00PMET Camille A. Brown Dancer Juel D Lane SummerStage Studio: Digital YouTube Dance / Family Tues 7/28/20 TBD Global Curators in Conversation: Paula Abreu, Fabiana Batistela + TBD Soundcheck: Curator Conversations Instagram Live Global Wed 7/29/20 6:00PM ET Fenne Lilly SummerStage Anywhere Sessions Instagram, Facebook + YouTube Live Indie Fri 7/31/20 8:00PM ET Crazy Legs + Guests TBC Culture Talks All Social Channels Hip-Hop Mon 8/3/20 12:00PM ET Karine Plantadit Monday Meditations Instagram Live Dance Mon 8/3/20 7:00PM ET Desmond Richardson, Khalia Campbell, Angie Swan, Laila Jeter and Donovan Canales SummerStage Anywhere Sessions All Social Channels Dance TBC TBC TBC Pabllo Vittar SummerStage Anywhere Sessions Facebook + YouTube Live Global Thurs 8/6/20 4:00PM ET Ibeyi & Emicida, moderated by Felix Contreras Culture Talks Facebook + YouTube Live Latin Fri 8/7/20 2:00PM ET Marvelous SummerStage Studio: Digital All Social Channels Hip-Hop / Family Sun 8/9/20 2:00PM ET Voices of a People's History #PeopleSpeak Sundays IGTV N/A Mon 8/10/20 12:00PM ET Karine Plantadit Monday Meditations Instagram Live Dance Mon 8/10/20 7:00PM ET Melanie George and Jawole Willa Jo Zollar Culture Talks Facebook + YouTube Dance Wed 8/12/20 8:00PM ET Chris Frantz (Tom Tom Club / Talking Heads) & Julia Cumming (Sunflower Bean) Culture Talks All Social Channels Indie Sun 8/16/20 2:00PM ET Sundae Sermon with DJ Stormin Norman #PeopleSpeak Sundays IGTV N/A Mon 8/17/20 12:00PM ET Karine Plantadit Monday Meditations Instagram Live Dance Mon 8/17/20 7:00PM ET Mickela Mallozzi w/ Miltieri Tucker Concepcion Culture Talks Facebook + YouTube Dance Tues 8/18/20 8:00PM ET DJ Rich Medina Weekly Beat– Live DJ Set Facebook + YouTube Live Global Mon 8/24/20 12:00PM ET Karine Plantadit Monday Meditations Instagram Live Dance Sun 8/30/20 2:00PM ET Brooklyn Dance Festival #PeopleSpeak Sundays IGTV N/A     SummerStage Social Media Twitter: @SummerStage Facebook: SummerStage NYC Instagram: @SummerStage YouTube: NYCSummerStage Twitch: SummerStageNYC Official Hashtags: #SummerStage #SummerStageAnywhere   As an independent, not-for-profit organization, we rely on our donors to help us make SummerStage possible. Support from donors will help secure the future of SummerStage as New York’s largest free outdoor performing arts festival. We believe the arts are for everyone and encourage those who can donate to visit cityparksfoundation.org/give for more information.   Capital One is the Title Sponsor of the 2020 SummerStage festival. Disney is a sponsor of SummerStage family programming, including presenting sponsor of SummerStage Studio: Digital. Supporting sponsorship is provided by Bloomberg Philanthropies and United Airlines.   Generous private support is provided by The Thompson Family Foundation, the Howard Gilman Foundation, Mertz Gilmore Foundation, The Shubert Organization, and the New York Community Trust NYC COVID-19 Response and Impact Fund. SummerStage is also supported, in part, by public funds from the NYC Department of Cultural Affairs, the NYS Council on the Arts with the support of Governor Andrew M. Cuomo and the NYS Legislature, and the National Endowment for the Arts. Additional support is generously provided by our dedicated SummerStage Members.   Media partners include Big Room, iHeart Radio featuring Lite FM, Power 105.1, 103.5 KTU, Q104.3, and Z100, Telemundo, WFUV, Relix, WNYC, WBGO, Time Out New York, DoNYC, Futuro Media Group, Big Screen Plaza, and Zoom Media & Marketing. Big Room is the exclusive live stream partner of SummerStage Anywhere.   In all of its programming and activities, City Parks Foundation partners with the New York City Department of Parks & Recreation to improve neighborhood parks and the communities.   About City Parks Foundation At City Parks Foundation, we are dedicated to invigorating and transforming parks into dynamic, vibrant centers of urban life through sports, arts, community building and education programs for all New Yorkers. Our programs -- located in more than 400 parks, recreation centers and public schools across New York City --reach 300,000 people each year. Our ethos is simple: thriving parks mean thriving communities.   About SummerStage Capital One City Parks Foundation SummerStage is New York’s largest free outdoor performing arts festival. SummerStage annually presents approximately 100 performances in 15-18 parks throughout the five boroughs. With performances ranging from American pop, Latin, world music, dance and theater, SummerStage fills a vital niche in New York City’s summer arts festival landscape. Since its inception 34 years ago, more than six million people from New York City and around the world have enjoyed SummerStage. Capital One is the Title Sponsor of SummerStage. For more information, visit www.SummerStage.org.   About Capital One Capital One Financial Corporation (www.capitalone.com) is a financial holding company whose subsidiaries, which include Capital One, N.A., and Capital One Bank (USA), N.A., had $249.8 billion in deposits and $372.5 billion in total assets as of December 31, 2018. Headquartered in McLean, Virginia, Capital One offers a broad spectrum of financial products and services to consumers, small businesses and commercial clients through a variety of channels. Capital One, N.A. has branches located primarily in New York, Louisiana, Texas, Maryland, Virginia, New Jersey and the District of Columbia. A Fortune 500 company, Capital One trades on the New York Stock Exchange under the symbol "COF" and is included in the S&P 100 index. Visit the Capital One newsroom for more Capital One news.   Press Contact Katy Cooper | Big Picture Media Office: 212-675-3103 | [email protected] 195 Broadway, Suite 341, Brooklyn, NY 11211     (adsbygoogle = window.adsbygoogle || ).push({}); Search for: Archives Archives Select Month July 2020 June 2020 May 2020 April 2020 February 2020 January 2020 December 2019 November 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 August 2015 /* */ Baseball Hall of Fame 2019 OTS Sports Silvana Magda with The Katenda Band & Viva Brazil Dancers ELE on Telexito Vargas Cosmetics (Short)https://www.youtube.com/watch?v=K68zhw-fxuM&t=116s CategoriesBlog Brazil Events Fashion Featured Flashbacks Jazzmobile On The Scene News On the Scene Sports Press Alert Television Uncategorized
Tumblr media
SIE7E lanza Gaia, un disco para reconectarnos con nosotros mismos y el planeta
by admin | Jun 30, 2020 | Featured, On The Scene News | 0 CommentsNews/Noticias     “Es un disco que te invita a la intimidad, a mirar hacia adentro con elementos viajeros que sirven hasta para meditar. Si lo escuchas con audifonos tambien es otra experiencia, recomiendo que lo escuches todo de corrido con los ojos...
Tumblr media
El Festival CortoCircuito en línea: la ventana a otras culturas a través del cine
by admin | Jun 6, 2020 | Featured, On The Scene News | 0 CommentsNews / Noticias     NUEVA YORK  - No cabe duda que cualquier expresión artística es un puente para escuchar las historias desde otro punto de vista, para aprender de otras culturas, para enriquecer el alma y para despertar los sentidos de diferentes...
Tumblr media
New, Milly Quezada presenta álbum “Duets Greatest Hits”
by admin | May 7, 2020 | Featured, On The Scene News, Uncategorized | 0 CommentsMilly Quezada presenta álbum "Duets Greatest Hits"     Escuche la producción aquí Miami, FL, 1 de mayo de 2020.- (@MinayaPR) Milly Quezada, presenta un álbum especial "Duets Greatest Hits" donde se reúne 12 grandes duetos que la Reina del Merengue ha... « Older Entries ELE OnTheScene MEET ELE OnTheScene About Us Staff Press Alerts EPK Media Kit NEED HELP? Privacy Policy Cookies Policy Sitemap Contact Us FOLLOW US FollowFollowFollowFollowFollowFollowFollowFollowFollow Subscription Newsletter Read the full article
0 notes
readerswithstyle · 6 years ago
Photo
Tumblr media
#kevinpowell #montclairlibrary #bounce #authors #libraries
0 notes
suzanneshannon · 6 years ago
Text
Breaking CSS Custom Properties out of :root Might Be a Good Idea
CSS Custom Properties have been a hot topic for a while now, with tons of great articles about them, from great primers on how they work to creative tutorials to do some real magic with them. If you’ve read more than one or two articles on the topic, then I’m sure you’ve noticed that they start by setting up the custom properties on the :root about 99% of the time.
While putting custom properties on the :root is great for things that you need to be available throughout your site, there are times when it makes more sense to scope your custom properties locally.
In this article, we’ll be exploring:
Why we put custom properties on the :root to begin with.
Why global scoping isn’t right for everything.
How to overcome class clashing with locally scoped custom properties
What’s the deal with custom properties and :root?
Before we jump into looking at the global scope, I think it’s worth looking at why everyone sets custom properties in the :root to begin with.
I’ve been declaring custom properties on the :root without even a second thought. Pretty much everyone does it without even a mention of why — including the official specification.
When the subject of :root is actually breached, it mentions how :root is the same as html, but with higher specificity, and that’s about it.
But does that higher specificity really matter?
Not really. All it does is select html with a higher specificity, the same way a class selector has higher specificity than an element selector when selecting a div.
:root { --color: red; } html { --color: blue; } .example { background: var(--color); /* Will be red because of :root's higher specificity */ }
The main reason that :root is suggested is because CSS isn’t only used to style HTML documents. It is also used for XML and SVG files.
In the case of XML and SVG files, :root isn’t selecting the html element, but rather their root (such as the svg tag in an SVG file).
Because of this, the best practice for a globally-scoped custom property is the :root. But if you’re making a website, you can throw it on an html selector and not notice a difference.
That said, with everyone using :root, it has quickly become a “standard.” It also helps separate variables to be used later on from selectors which are actively styling the document.
Why global scope isn’t right for everything
With CSS pre-processors, like Sass and Less, most of us keep variables tucked away in a partial dedicated to them. That works great, so why should we consider locally scoping variables all of a sudden?
One reason is that some people might find themselves doing something like this.
:root { --clr-light: #ededed; --clr-dark: #333; --clr-accent: #EFF; --ff-heading: 'Roboto', sans-serif; --ff-body: 'Merriweather', serif; --fw-heading: 700; --fw-body: 300; --fs-h1: 5rem; --fs-h2: 3.25rem; --fs-h3: 2.75rem; --fs-h4: 1.75rem; --fs-body: 1.125rem; --line-height: 1.55; --font-color: var(--clr-light); --navbar-bg-color: var(--clr-dark); --navbar-logo-color: var(--clr-accent); --navbar-border: thin var(--clr-accent) solid; --navbar-font-size: .8rem; --header-color: var(--clr-accent); --header-shadow: 2px 3px 4px rgba(200,200,0,.25); --pullquote-border: 5px solid var(--clr-light); --link-fg: var(--clr-dark); --link-bg: var(--clr-light); --link-fg-hover: var(--clr-dark); --link-bg-hover: var(--clr-accent); --transition: 250ms ease-out; --shadow: 2px 5px 20px rgba(0, 0, 0, .2); --gradient: linear-gradient(60deg, red, green, blue, yellow); --button-small: .75rem; --button-default: 1rem; --button-large: 1.5rem; }
Sure, this gives us one place where we can manage styling with custom properties. But, why do we need to define my --header-color or --header-shadow in my :root? These aren’t global properties, I’m clearly using them in my header and no where else.
If it’s not a global property, why define it globally? That’s where local scoping comes into play.
Locally scoped properties in action
Let’s say we have a list to style, but our site is using an icon system — let’s say Font Awesome for simplicity’s sake. We don’t want to use the disc for our ul bullets — we want a custom icon!
If I want to switch out the bullets of an unordered list for Font Awesome icons, we can do something like this:
ul { list-style: none; } li::before { content: "\f14a"; /* checkbox */ font-family: "Font Awesome Free 5"; font-weight: 900; float: left; margin-left: -1.5em; }
While that’s super easy to do, one of the problems is that the icon becomes abstract. Unless we use Font Awesome a lot, we aren’t going to know that f14a means, let alone be able to identify it as a checkbox icon. It’s semantically meaningless.
We can help clarify things with a custom property here.
ul { --checkbox-icon: "\f14a"; list-style: none; }
This becomes a lot more practical once we start having a few different icons in play. Let’s up the complexity and say we have three different lists:
<ul class="icon-list checkbox-list"> ... </ul> <ul class="icon-list star-list"> ... </ul> <ul class="icon-list bolt-list"> ... </ul>
Then, in our CSS, we can create the custom properties for our different icons:
.icon-list { --checkbox: "\f14a"; --star: "\f005"; --bolt: "\f0e7"; list-style: none; }
The real power of having locally scoped custom properties comes when we want to actually apply the icons.
We can set content: var(--icon) on our list items:
.icon-list li::before { content: var(--icon); font-family: "Font Awesome Free 5"; font-weight: 900; float: left; margin-left: -1.5em; }
Then we can define that icon for each one of our lists with more meaningful naming:
.checkbox-list { --icon: var(--checkbox); } .star-list { --icon: var(--star); } .bolt-list { --icon: var(--bolt); }
We can step this up a notch by adding colors to the mix:
.icon-list li::before { content: var(--icon); color: var(--icon-color); /* Other styles */ }
Moving icons to the global scope
If we’re working with an icon system, like Font Awesome, then I’m going to assume that we’d be using them for more than just replacing the bullets in unordered lists. As long as we're using them in more than one place it makes sense to move the icons to the :root as we want them to be available globally.
Having icons in the :root doesn’t mean we can’t still take advantage of locally scoped custom properties, though!
:root { --checkbox: "\f14a"; --star: "\f005"; --bolt: "\f0e7"; --clr-success: rgb(64, 209, 91); --clr-error: rgb(219, 138, 52); --clr-warning: rgb(206, 41, 26); } .icon-list li::before { content: var(--icon); color: var(--icon-color); /* Other styles */ } .checkbox-list { --icon: var(--checkbox); --icon-color: var(--clr-success); } .star-list { --icon: var(--star); --icon-color: var(--clr-warning); } .bolt-list { --icon: var(--bolt); --icon-color: var(--clr-error); }
Adding fallbacks
We could either put in a default icon by setting it as the fallback (e.g. var(--icon, "/f1cb")), or, since we’re using the content property, we could even put in an error message var(--icon, "no icon set").
See the Pen Custom list icons with CSS Custom Properties by Kevin (@kevinpowell) on CodePen.
By locally scoping the --icon and the --icon-color variables, we’ve greatly increased the readability of our code. If someone new were to come into the project, it will be a whole lot easier for them to know how it works.
This isn’t limited to Font Awesome, of course. Locally scoping custom properties also works great for an SVG icon system:
:root { --checkbox: url(../assets/img/checkbox.svg); --star: url(../assets/img/star.svg); --baby: url(../assets/img/baby.svg); } .icon-list { list-style-image: var(--icon); } .checkbox-list { --icon: checkbox; } .star-list { --icon: star; } .baby-list { --icon: baby; }
Using locally scoped properties for more modular code
While the example we just looked at works well to increase the readability of our code — which is awesome — we can do a lot more with locally scoped properties.
Some people love CSS as it is; others hate working with the global scope of the cascade. I’m not here to discuss CSS-in-JS (there are enough really smart people already talking about that), but locally scoped custom properties offer us a fantastic middle ground.
By taking advantage of locally scoped custom properties, we can create very modular code that takes a lot of the pain out of trying to come up with meaningful class names.
Let’s um, scope the scenario.
Part of the reason people get frustrated with CSS is that the following markup can cause problems when we want to style something.
<div class="card"> <h2 class="title">This is a card</h2> <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Libero, totam.</p> <button class="button">More info</button> </div> <div class="cta"> <h2 class="title">This is a call to action</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Aliquid eveniet fugiat ratione repellendus ex optio, ipsum modi praesentium, saepe, quibusdam rem quaerat! Accusamus, saepe beatae!</p> <button class="button">Buy now</button> </div>
If I create a style for the .title class, it will style both the elements containing the .card and .cta classes at the same time. We can use a compound selector (i.e. .card .title), but that raises the specificity which can lead to less maintainability. Or, we can take a BEM approach and rename our .title class to .card__title and .cta__title to isolate those elements a little more.
Locally scoped custom properties offer us a great solution though. We can apply them to the elements where they’ll be used:
.title { color: var(--title-clr); font-size: var(--title-fs); } .button { background: var(--button-bg); border: var(--button-border); color: var(--button-text); }
Then, we can control everything we need within their parent selectors, respectively:
.card { --title-clr: #345; --title-fs: 1.25rem; --button-border: 0; --button-bg: #333; --button-text: white; } .cta { --title-clr: #f30; --title-fs: 2.5rem; --button-border: 0; --button-bg: #333; --button-text: white; }
Chances are, there are some defaults, or commonalities, between buttons or titles even when they are in different components. For that, we could build in fallbacks, or simply style those as we usually would.
.button { /* Custom variables with default values */ border: var(--button-border, 0); /* Default: 0 */ background: var(--button-bg, #333); /* Default: #333 */ color: var(--button-text, white); /* Default: white */ /* Common styles every button will have */ padding: .5em 1.25em; text-transform: uppercase; letter-spacing: 1px; }
We could even use calc() to add a scale to our button, which would have the potential to remove the need for .btn-sm, btn-lg type classes (or it could be built into those classes, depending on the situation).
.button { font-size: calc(var(--button-scale) * 1rem); /* Multiply `--button-scale` by `1rem` to add unit */ } .cta { --button-scale: 1.5; }
Here is a more in-depth look at all of this in action:
See the Pen Custom list icons with CSS Custom Properties by Kevin (@kevinpowell) on CodePen.
Notice in that example above that I have used some generic classes, such as .title and .button, which are styled with locally scoped properties (with the help of fallbacks). With those being setup with custom properties, I can define those locally within the parent selector, effectively giving each its own style without the need of an additional selector.
I also set up some pricing cards with modifier classes on them. Using the generic .pricing class, I set everything up, and then using modifier classes, I redefined some of the properties, such as --text, and --background, without having to worry about using compound selectors or additional classes.
By working this way, it makes for very maintainable code. It’s easy to go in and change the color of a property if we need to, or even come in and create a completely new theme or style, like the rainbow variation of the pricing card in the example.
It takes a bit of foresight when initially setting everything up, but the payoff can be awesome. It might even seem counter-intuitive to how you are used to approaching styles, but next time you go to create a custom property, try keeping it defined locally if it doesn’t need to live globally, and you’ll start to see how useful it can be.
The post Breaking CSS Custom Properties out of :root Might Be a Good Idea appeared first on CSS-Tricks.
Breaking CSS Custom Properties out of :root Might Be a Good Idea published first on https://deskbysnafu.tumblr.com/
0 notes
siliconwebx · 6 years ago
Text
Breaking CSS Custom Properties out of :root Might Be a Good Idea
CSS Custom Properties have been a hot topic for a while now, with tons of great articles about them, from great primers on how they work to creative tutorials to do some real magic with them. If you’ve read more than one or two articles on the topic, then I’m sure you’ve noticed that they start by setting up the custom properties on the :root about 99% of the time.
While putting custom properties on the :root is great for things that you need to be available throughout your site, there are times when it makes more sense to scope your custom properties locally.
In this article, we’ll be exploring:
Why we put custom properties on the :root to begin with.
Why global scoping isn’t right for everything.
How to overcome class clashing with locally scoped custom properties
What’s the deal with custom properties and :root?
Before we jump into looking at the global scope, I think it’s worth looking at why everyone sets custom properties in the :root to begin with.
I’ve been declaring custom properties on the :root without even a second thought. Pretty much everyone does it without even a mention of why — including the official specification.
When the subject of :root is actually breached, it mentions how :root is the same as html, but with higher specificity, and that’s about it.
But does that higher specificity really matter?
Not really. All it does is select html with a higher specificity, the same way a class selector has higher specificity than an element selector when selecting a div.
:root { --color: red; } html { --color: blue; } .example { background: var(--color); /* Will be red because of :root's higher specificity */ }
The main reason that :root is suggested is because CSS isn’t only used to style HTML documents. It is also used for XML and SVG files.
In the case of XML and SVG files, :root isn’t selecting the html element, but rather their root (such as the svg tag in an SVG file).
Because of this, the best practice for a globally-scoped custom property is the :root. But if you’re making a website, you can throw it on an html selector and not notice a difference.
That said, with everyone using :root, it has quickly become a “standard.” It also helps separate variables to be used later on from selectors which are actively styling the document.
Why global scope isn’t right for everything
With CSS pre-processors, like Sass and Less, most of us keep variables tucked away in a partial dedicated to them. That works great, so why should we consider locally scoping variables all of a sudden?
One reason is that some people might find themselves doing something like this.
:root { --clr-light: #ededed; --clr-dark: #333; --clr-accent: #EFF; --ff-heading: 'Roboto', sans-serif; --ff-body: 'Merriweather', serif; --fw-heading: 700; --fw-body: 300; --fs-h1: 5rem; --fs-h2: 3.25rem; --fs-h3: 2.75rem; --fs-h4: 1.75rem; --fs-body: 1.125rem; --line-height: 1.55; --font-color: var(--clr-light); --navbar-bg-color: var(--clr-dark); --navbar-logo-color: var(--clr-accent); --navbar-border: thin var(--clr-accent) solid; --navbar-font-size: .8rem; --header-color: var(--clr-accent); --header-shadow: 2px 3px 4px rgba(200,200,0,.25); --pullquote-border: 5px solid var(--clr-light); --link-fg: var(--clr-dark); --link-bg: var(--clr-light); --link-fg-hover: var(--clr-dark); --link-bg-hover: var(--clr-accent); --transition: 250ms ease-out; --shadow: 2px 5px 20px rgba(0, 0, 0, .2); --gradient: linear-gradient(60deg, red, green, blue, yellow); --button-small: .75rem; --button-default: 1rem; --button-large: 1.5rem; }
Sure, this gives us one place where we can manage styling with custom properties. But, why do we need to define my --header-color or --header-shadow in my :root? These aren’t global properties, I’m clearly using them in my header and no where else.
If it’s not a global property, why define it globally? That’s where local scoping comes into play.
Locally scoped properties in action
Let’s say we have a list to style, but our site is using an icon system — let’s say Font Awesome for simplicity’s sake. We don’t want to use the disc for our ul bullets — we want a custom icon!
If I want to switch out the bullets of an unordered list for Font Awesome icons, we can do something like this:
ul { list-style: none; } li::before { content: "\f14a"; /* checkbox */ font-family: "Font Awesome Free 5"; font-weight: 900; float: left; margin-left: -1.5em; }
While that’s super easy to do, one of the problems is that the icon becomes abstract. Unless we use Font Awesome a lot, we aren’t going to know that f14a means, let alone be able to identify it as a checkbox icon. It’s semantically meaningless.
We can help clarify things with a custom property here.
ul { --checkbox-icon: "\f14a"; list-style: none; }
This becomes a lot more practical once we start having a few different icons in play. Let’s up the complexity and say we have three different lists:
<ul class="icon-list checkbox-list"> ... </ul> <ul class="icon-list star-list"> ... </ul> <ul class="icon-list bolt-list"> ... </ul>
Then, in our CSS, we can create the custom properties for our different icons:
.icon-list { --checkbox: "\f14a"; --star: "\f005"; --bolt: "\f0e7"; list-style: none; }
The real power of having locally scoped custom properties comes when we want to actually apply the icons.
We can set content: var(--icon) on our list items:
.icon-list li::before { content: var(--icon); font-family: "Font Awesome Free 5"; font-weight: 900; float: left; margin-left: -1.5em; }
Then we can define that icon for each one of our lists with more meaningful naming:
.checkbox-list { --icon: var(--checkbox); } .star-list { --icon: var(--star); } .bolt-list { --icon: var(--bolt); }
We can step this up a notch by adding colors to the mix:
.icon-list li::before { content: var(--icon); color: var(--icon-color); /* Other styles */ }
Moving icons to the global scope
If we’re working with an icon system, like Font Awesome, then I’m going to assume that we’d be using them for more than just replacing the bullets in unordered lists. As long as we're using them in more than one place it makes sense to move the icons to the :root as we want them to be available globally.
Having icons in the :root doesn’t mean we can’t still take advantage of locally scoped custom properties, though!
:root { --checkbox: "\f14a"; --star: "\f005"; --bolt: "\f0e7"; --clr-success: rgb(64, 209, 91); --clr-error: rgb(219, 138, 52); --clr-warning: rgb(206, 41, 26); } .icon-list li::before { content: var(--icon); color: var(--icon-color); /* Other styles */ } .checkbox-list { --icon: var(--checkbox); --icon-color: var(--clr-success); } .star-list { --icon: var(--star); --icon-color: var(--clr-warning); } .bolt-list { --icon: var(--bolt); --icon-color: var(--clr-error); }
Adding fallbacks
We could either put in a default icon by setting it as the fallback (e.g. var(--icon, "/f1cb")), or, since we’re using the content property, we could even put in an error message var(--icon, "no icon set").
See the Pen Custom list icons with CSS Custom Properties by Kevin (@kevinpowell) on CodePen.
By locally scoping the --icon and the --icon-color variables, we’ve greatly increased the readability of our code. If someone new were to come into the project, it will be a whole lot easier for them to know how it works.
This isn’t limited to Font Awesome, of course. Locally scoping custom properties also works great for an SVG icon system:
:root { --checkbox: url(../assets/img/checkbox.svg); --star: url(../assets/img/star.svg); --baby: url(../assets/img/baby.svg); } .icon-list { list-style-image: var(--icon); } .checkbox-list { --icon: checkbox; } .star-list { --icon: star; } .baby-list { --icon: baby; }
Using locally scoped properties for more modular code
While the example we just looked at works well to increase the readability of our code — which is awesome — we can do a lot more with locally scoped properties.
Some people love CSS as it is; others hate working with the global scope of the cascade. I’m not here to discuss CSS-in-JS (there are enough really smart people already talking about that), but locally scoped custom properties offer us a fantastic middle ground.
By taking advantage of locally scoped custom properties, we can create very modular code that takes a lot of the pain out of trying to come up with meaningful class names.
Let’s um, scope the scenario.
Part of the reason people get frustrated with CSS is that the following markup can cause problems when we want to style something.
<div class="card"> <h2 class="title">This is a card</h2> <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Libero, totam.</p> <button class="button">More info</button> </div> <div class="cta"> <h2 class="title">This is a call to action</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Aliquid eveniet fugiat ratione repellendus ex optio, ipsum modi praesentium, saepe, quibusdam rem quaerat! Accusamus, saepe beatae!</p> <button class="button">Buy now</button> </div>
If I create a style for the .title class, it will style both the elements containing the .card and .cta classes at the same time. We can use a compound selector (i.e. .card .title), but that raises the specificity which can lead to less maintainability. Or, we can take a BEM approach and rename our .title class to .card__title and .cta__title to isolate those elements a little more.
Locally scoped custom properties offer us a great solution though. We can apply them to the elements where they’ll be used:
.title { color: var(--title-clr); font-size: var(--title-fs); } .button { background: var(--button-bg); border: var(--button-border); color: var(--button-text); }
Then, we can control everything we need within their parent selectors, respectively:
.card { --title-clr: #345; --title-fs: 1.25rem; --button-border: 0; --button-bg: #333; --button-text: white; } .cta { --title-clr: #f30; --title-fs: 2.5rem; --button-border: 0; --button-bg: #333; --button-text: white; }
Chances are, there are some defaults, or commonalities, between buttons or titles even when they are in different components. For that, we could build in fallbacks, or simply style those as we usually would.
.button { /* Custom variables with default values */ border: var(--button-border, 0); /* Default: 0 */ background: var(--button-bg, #333); /* Default: #333 */ color: var(--button-text, white); /* Default: white */ /* Common styles every button will have */ padding: .5em 1.25em; text-transform: uppercase; letter-spacing: 1px; }
We could even use calc() to add a scale to our button, which would have the potential to remove the need for .btn-sm, btn-lg type classes (or it could be built into those classes, depending on the situation).
.button { font-size: calc(var(--button-scale) * 1rem); /* Multiply `--button-scale` by `1rem` to add unit */ } .cta { --button-scale: 1.5; }
Here is a more in-depth look at all of this in action:
See the Pen Custom list icons with CSS Custom Properties by Kevin (@kevinpowell) on CodePen.
Notice in that example above that I have used some generic classes, such as .title and .button, which are styled with locally scoped properties (with the help of fallbacks). With those being setup with custom properties, I can define those locally within the parent selector, effectively giving each its own style without the need of an additional selector.
I also set up some pricing cards with modifier classes on them. Using the generic .pricing class, I set everything up, and then using modifier classes, I redefined some of the properties, such as --text, and --background, without having to worry about using compound selectors or additional classes.
By working this way, it makes for very maintainable code. It’s easy to go in and change the color of a property if we need to, or even come in and create a completely new theme or style, like the rainbow variation of the pricing card in the example.
It takes a bit of foresight when initially setting everything up, but the payoff can be awesome. It might even seem counter-intuitive to how you are used to approaching styles, but next time you go to create a custom property, try keeping it defined locally if it doesn’t need to live globally, and you’ll start to see how useful it can be.
The post Breaking CSS Custom Properties out of :root Might Be a Good Idea appeared first on CSS-Tricks.
😉SiliconWebX | 🌐CSS-Tricks
0 notes