const toolsOn = false;

/* ///////////////////////////////////////////// */

/* DO NOT DELETE – Knotch Tracking – Add tracking to product Links */

function setupProductLinks() ;:””‘?\]/g;

let g = document.querySelectorAll(“.product a”);
let gpt = document.querySelectorAll(“.product .short-title”);
let gpb = document.querySelectorAll(“.product .brand-name”);

var i;

for (i = 0; i < g.length; i++)

let gd = gpb[i].textContent + "-" + gpt[i].textContent;
let rgd = gd.replace(regex, '');
let prodVars = rgd.replace(/s/g, '_');

let clck = "javascript:invokeKnotchEventPixel('https://t.knotch.it/receive/beacon.gif?account_id=255cc573-7884-4b5a-baf9-8b0255872664&event=R29LP02_ProductClick_" + prodVars + "');";
g[i].setAttribute("onclick", clck);

/* ///////////////////////////////////////////// */

/* Image Annotations */

var elem = new Array();
var mobilebuy = new Array();
var closebutton = new Array();

var init = false;
var previous = 100;
var mobile = false;
var desktop = true;

var grabnav;

// What device is this?
if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i))
var mobile = true;
var desktop = false;

function assembleArray(id, pos)
// Assemble a tip and dot array, add id tags to them
var a = [document.getElementById('anno-tip' + id), document.getElementById('anno-dot' + id + '-hint'), pos];
return a;

function tipOn(elem)
// Grab items from the array
var pop = elem[0];
var hint = elem[1];
var pos = elem[2];
// Setup Global Nav for hiding on mobile
if (init == false)
// Add the id to the global nav and store mobile buy buttons
initAnnotations();
// Done with setup
init = true;

if (mobile == true)
// Mobile & Tablet, click dots, show mobile buy button
showPop(pop,pos,true);
// If just mobiile and not tablet, hide the global nav
if (window.innerWidth < 768)
hideGlobalNav();

else
// Check for small or wide desktop
if (window.innerWidth < 768)
// Desktop Small, click dots, show mobile buy button
showPop(pop,pos,true);
hideGlobalNav();
else
// Desktop Wide, rollover dots, no mobile buy button
showPop(pop,pos,false);
showHint(hint);

function tipOff(elem) {
// Grab items from the array
var pop = elem[0];
var hint = elem[1];
var pos = elem[2];
if (mobile == true)
// Mobile & Tablet, click dots, show mobile buy button
hidePop(pop,pos,true);
// If just mobiile and not tablet, hide the global nav
if (window.innerWidth < 768)
showGlobalNav();

else
// Check for small or wide desktop
if (window.innerWidth 540)
mobileExtraOn(id);

function closeTip(id)
// Mobile onClick closebutton
var lmt = assembleArray(id, ‘0’);
tipOff(lmt);
if (window.innerWidth > 540)
mobileExtraOff(id);

function showTip(id)
// Desktop Rollover
if (desktop == true)
if (window.innerWidth > 720)
var lmt = assembleArray(id, ‘-15%’);
tipOn(lmt);

function hideTip(id)
// Desktop Rolloff
if (desktop == true)
if (window.innerWidth > 720)
var lmt = assembleArray(id, ‘0’);
tipOff(lmt);

function mobileExtraOn(id)
// Turn on the mobile buy button
mobilebuy[id].style.display = “block”;
closebutton[id].style.display = “block”;

function mobileExtraOff(id)
// Turn off the mobile buy button
mobilebuy[id].style.display = “none”;
closebutton[id].style.display = “none”;

function initAnnotations()

// Add id tag to the global nav, for hiding on mobile
document.getElementsByClassName(“global-header”)[0].setAttribute(“id”, “tmp-global-header”);
grabnav = document.getElementById(‘tmp-global-header’);

// Get the mobile buttons
mobilebuy = document.getElementsByClassName(‘anno-mobile-buy’);
// Get the mobile close buttoms
closebutton = document.getElementsByClassName(‘anno-tip-close’);

function showGlobalNav()
grabnav.style.display = “block”;

function hideGlobalNav()
grabnav.style.display = “none”;

/* ///////////////////////////////////////////// */

// Tools – TURN OFF BEFORE PUBLISH

function tagImages()

let elems = document.querySelectorAll(“.section-image .img-container”);
let e;

for (e = 0; e < elems.length; e++)

elems[e].setAttribute("id", ["image" + e]);

// Temp numbering, turn off above by setting toolsOn to false

if (toolsOn == true)
let add = document.createElement('DIV');
elems[e].appendChild(add);

add.innerHTML = "

” + e + “

“;

// Add Shop Look buttons

let addCTA = document.createElement(‘DIV’);
elems[e].appendChild(addCTA);

if (e == 7)
addCTA.innerHTML = “

“;

// Reveal?

let elemsReveal = document.querySelectorAll(“.section-reveal-container”);

let addReveal = document.createElement(‘DIV’);
elemsReveal[0].appendChild(addReveal);

addReveal.innerHTML = “

“;

// Cleans up
elems, e = undefined;

// Setup

function setupAnnotations(id)

/* ///////////////////////////////////////////// */

// Grab the img-containers for adding annotations

let elems = document.querySelectorAll(“.section-image .img-container”);

/* ///////////////////////////////////////////// */

/* Annotation 1 */

let anno1 = document.createElement(‘DIV’);
elems[id].classList.add(“anno-layers”);
elems[id].appendChild(anno1);

anno1.innerHTML = “

“;

/* Cleanup */

elems = undefined;

function setupInsetAnimations()

/* ///////////////////////////////////////////// */

// Grab the img-containers for adding animations (replaces gifs)

let elems = document.querySelectorAll(“.section-image .img-container”);

/* ///////////////////////////////////////////// */

/* Animation 1 */

let anim1 = document.createElement(‘DIV’);
elems[5].classList.add(“tmp-anim”);
elems[5].appendChild(anim1);

anim1.innerHTML = “

“;

/* Animation 2 */

let anim2 = document.createElement(‘DIV’);
elems[8].classList.add(“tmp-anim”);
elems[8].appendChild(anim2);

anim2.innerHTML = “

“;

/* Animation 3 */

let anim3 = document.createElement(‘DIV’);
elems[10].classList.add(“tmp-anim”);
elems[10].appendChild(anim3);

anim3.innerHTML = “

“;

/* Cleanup */

elems = undefined;

/* ///////////////////////////////////////////// */

/* Video */

// Video urls from JWplayer
const videoHeroDesktopBigURL = “https://content.jwplatform.com/videos/E64tKWy0-r0yi2e87.mp4”; // NEW: For big monitor, desktop
const videoHeroDesktopURL = “https://content.jwplatform.com/videos/E64tKWy0-gaV8s59T.mp4”;
const videoHeroTabletURL = “https://content.jwplatform.com/videos/E64tKWy0-b8WZHQfV.mp4”;

const videoHeroMobileURL = “https://content.jwplatform.com/videos/i8HEn9bG-YUuIWPFk.mp4”;
const videoHeroSmallMobileURL = “https://content.jwplatform.com/videos/i8HEn9bG-CL7MEiUe.mp4”;

// Poster/thumbnail images while video loads
const vidPosterWide = “https://www.refinery29.com/images/10377554.jpg”;
const vidPosterTall = “https://www.refinery29.com/images/10377555.jpg”;

// ALt text
const altTag = “”;

function startVideoHero()

const videoHeroDesktop = document.getElementById(“tmp-video-hero-desktop”);
const videoHeroMobile = document.getElementById(“tmp-video-hero-mobile”);

if (window.innerWidth > 1799)
videoHeroDesktop.src = videoHeroDesktopBigURL;
videoHeroDesktop.load();

if (window.innerWidth > 1220 && window.innerWidth 767 && window.innerWidth 360 && window.innerWidth < 768)
videoHeroMobile.src = videoHeroMobileURL;
videoHeroMobile.load();

if (window.innerWidth < 361)
videoHeroMobile.src = videoHeroSmallMobileURL;
videoHeroMobile.load();

function setupVideoHero()

// Grab the target
const videoInject = document.getElementsByClassName("opener");
// Make a new element
let vidOpener = document.createElement('DIV');
// Give the new element a class
vidOpener.classList.add("tmp-video-opener");
// Update the element
videoInject[0].appendChild(vidOpener);
// Assemble the custom html
let allCode = "

“;
// Insert the custom html
vidOpener.innerHTML = allCode;

// Add the video urls etc.
startVideoHero();

// Cleanup
//videoInject = undefined;

/* ///////////////////////////////////////////// */

/* Setup */

function setupPage()

// Video opener
setupVideoHero();
// Annotations, set number based on image tag using the tag images function
setupAnnotations(3);
// Inset animations
setupInsetAnimations();
// Number the images, turn off for publish
tagImages();
// Knotch analytics
setupProductLinks();

/* ///////////////////////////////////////////// */

/* Preload */

document.onmouseleave = function()
window.isReady = false

window.addEventListener(“resize”, function() window.isReady = false);

function ready(fn)
if (document.attachEvent ? document.readyState === “complete” : document.readyState !== “loading”)
fn();
else
document.addEventListener(‘DOMContentLoaded’, fn);

window.isReady = window.isReady === undefined ? false : window.isReady;

ready(function ()
var imagesLoadedInterval = setInterval(function()
if(window.imagesLoaded)
imagesLoaded( ‘#tmp-load’, background: true , function()
window.isReady = false
clearInterval(imagesLoadedInterval)
);
clearInterval(imagesLoadedInterval)

, 100)

if (window.isReady === false)
window.isReady = true
else
return

const waitForLoad = setTimeout(function()
clearTimeout(waitForLoad);
setupPage();
, 200);

)



function invokeKnotchEventPixel(eventName)
try
var img = new Image();
var src = eventName;
src += “&ts=” + Date.now().toString();
img.src = src;
catch (e)

Our lives have been in a state of flux — and so has our sense of style. In partnership with Macy’s, we’ve tapped R29 editors to shed light on how their personal styles have evolved in the last year, aligning them with their own specific fashion identity that offers a glimpse into who they are and a reflection of the times we’re living in. Read more about the partnership and the other fashion identities here

It’s an unfortunate but true reality — over a year of staying indoors has endangered one species in particular: the social butterfly. Thankfully, its virtual (and fashion) counterpart has flourished during this time. The Social (Media) Butterfly, lives and draws inspiration from social media, flitting from trend to trend and seeking out the next buzz-worthy bag, shoe, or pattern. 

Brenda Barrientos, social strategist for Refinery29 Somos, had always stopped short from fully expressing her personal style, too afraid and too self-conscious to draw attention to herself. But in the last year, she embarked on a journey of discovery that allowed her to figuratively break free from her chrysalis and emerge as The Social (Media) Butterfly. And with it, she’s developed a fearless approach to fashion, outfitting herself in loud prints and funky silhouettes. Because, in her own words, “Why not?” Read all about it, below.

My pre-pandemic style could be described as… “Very colorful and bold, but a little more restrained — I think I was more self-conscious or not entirely comfortable expressing who I was through fashion and beauty.”    

My personal style evolved… “When I started to break out of my comfort zone. I recently bought a bright blue swirly-printed two-piece set that I never would’ve worn before the pandemic because it’s so out-there. But I’m more comfortable with standing out because at this point, why not?”

But when the pandemic hit… “I was living at home with my parents and I mostly wore sweats. I felt like I wasn’t taking care of myself. Last July, I moved out and into my own place, and it was a hard adjustment at first, but not only did I learn to be comfortable in my solitude, but I also discovered the joy in dressing up, even if it was only to run an errand or go to the grocery store. These small opportunities to leave the house are a big deal to me, so I like to take my time to get ready — about two hours. I relish the process, and it’s become a form of self-care.”

What I learned: “I definitely feel better about myself when I look good — there’s a shift in my mood and energy when my hair is done and I’m put-together. It reminds me of times before COVID. I used to hold off on wearing certain outfits because I thought I’d save them for when things returned to normal. But what was I waiting for? I might as well wear them now and live in the moment, which is why I’ll wear a bright yellow turtleneck with orange satin pants and white pointy ankle boots to the grocery store. Or slip into a pleather two-piece or an all-denim vintage jumpsuit, simply because I love the way it fits my body.”

I’m The Social (Media) Butterfly because… “I am obsessed with seeking out trends on social media. I’m on Instagram constantly because it’s part of my job — I build out strategy for R29Somos, Refinery29’s Latinx platform. Besides being on it for work, I’m constantly on my personal account discovering under-the-radar brands or influencers. My explore page is a mix of influencers, emerging brands, niche trends, and cool home decor. It’s how I draw inspiration for my own outfits, and it’s how I shop, too — tapping fashion credits on someone’s look, browsing the brand’s grid, and then making a purchase.” 

My essentials include: “High-waist pants/jeans, printed pants, colorful two-piece sets, crop tops, tiny bags, and bright eyeshadow shades.” 

The most surprising thing I discovered: “I’m the type of person who doesn’t mind the spotlight. I used to shy away, but I’m past that — if I like something, then I’m not going to stop myself from wearing, say, my lavender platform Crocs.” 

My favorite pandemic purchases are… “These super-chunky lime green jelly sandals with daisies affixed across the top strap. I can’t wait to wear them with everything this summer.” 

My 2021 personal style will… “Continue to evolve as I experiment with new trends and learn what I like and dislike. I’m free-spirited and I like to maneuver through life with an open mind, which is how I approach my personal style as well.”

Get to know more about The Social (Media) Butterfly through products and events, below.




Like what you see? How about some more R29 goodness, right here?

Source link